Exemple #1
0
        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是正确的。
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        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();
        }
Exemple #5
0
        //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.附加题:还可以通过: 反射
        }