static void Main(string[] args) { //控制台形式的计算器 Console.Write("请输入第一个数:"); int num1 = Convert.ToInt32(Console.ReadLine());//可能会报异常 Console.Write("请输入第二个数:"); int num2 = Convert.ToInt32(Console.ReadLine()); Console.Write("请输入一个操作符(+,-,*,/):"); string opt = Console.ReadLine();//符号 //6_1-1. //Calculator.Add() //7_1.JiSuan父类实例化(新建一个方法) JiSuan js = GetJiSuanByNumberAndOpt(opt, num1, num2); //7_3.判断实例是否为空 if (js != null) { //7_3_1.开始调用JiSuan中获取结果的方法GetResult() int Result = js.GetResult(); //7_3_2.打印结果 Console.WriteLine(Result); Console.ReadKey(); } //类---类库的方式 }
public void JiSuanTest() { int fh_len = 2; List <int> fh = new List <int>() { 3, 4 }; List <int> list = new List <int>() { 2, 50, 25 }; JiSuan j = new JiSuan(fh_len, list, fh); Assert.AreEqual(int.Parse(j.r.ToString()), 4);//运算式为:2*50/25,结果为4 //断言为4是正确的。 }
/// <summary> /// 返回值,是计算器的父类类型。 /// =============================== /// /// 简单工厂设计模式 /// /// 方法的返回值类型 -- 父类类型 /// 方法里返回具体对象 -- 父类的子类对象。 /// /// =============================== /// /// </summary> /// <param name="p"></param> private JiSuan GetJiSuanObj(string p) { JiSuan js = null; switch (p) { case "+": js = new JiaFa(); break; case "-": js = new JianFa(); break; } return(js); }
private void btnJiSuan_Click(object sender, EventArgs e) { #region 旧代码 //Calculator cal = new Calculator(); //cal.Number1 = Convert.ToInt32(txtNumber1.Text.Trim()); //cal.Number2 = Convert.ToInt32(txtNumber2.Text.Trim()); //switch (cboFuHao.Text.Trim()) //{ // case "+": // lblResult.Text = cal.Add().ToString(); // break; // case "-": // lblResult.Text = cal.Sub().ToString(); // break; //} #endregion int n1 = Convert.ToInt32(txtNumber1.Text.Trim()); int n2 = Convert.ToInt32(txtNumber2.Text.Trim()); #region 旧代码 //JiSuan jisuan = null; //switch (cboFuHao.Text.Trim()) //{ // case "+": // jisuan = new JiaFa(); // break; // case "-": // jisuan = new JianFa(); // break; // case "*": // jisuan = new ChengFa(); // break; //} #endregion //通过调用GetJiSuanObj方法,返回一个对应的计算的对象。 JiSuan jisuan = GetJiSuanObj(cboFuHao.Text.Trim()); jisuan.Number1 = n1; jisuan.Number2 = n2; lblResult.Text = jisuan.Computer().ToString(); }
//7_2.生成一个方法 private static JiSuan GetJiSuanByNumberAndOpt(string opt, int num1, int num2) { //7_2_1.错误1.抽象类不能实例化---为了多态 //JiSuan js = new JiSuan(); //7_2_2.正确1.一个对象等于null,代表这个对象在栈空间没有堆里面的地址 JiSuan js = null; //7_2_3.判断操作符,进行相应计算 switch (opt) { case "+": js = new Add(num1, num2); break; case "-": js = new Sub(num1, num2); break; //8_4.乘法 case "*": js = new ChengFa(num1, num2); break; } return(js); //9_1.附加题:还可以通过: 反射 }