利用面向对象写一个计算器

Posted 蜀云泉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用面向对象写一个计算器相关的知识,希望对你有一定的参考价值。

 

  本文参考了程杰的《大话设计模式》,使用C#语言利用面向对象的模式来写一个计算器。

如果是我本人来写计算器,也就加减乘除的话,估计我会全部写进控制台里面,写4个if语句出来......或者我会利用switch,但是这样的效果都不好,有更好的方法,就是如下所示的代码啦:

先定义一个Operation类,主要实现运算框架:

    class Operation
    {
        public double Number1 { get; set;}
        public double Number2 { get; set; }

        public virtual double GetResult()   //虚方法
        {
            double result=0;
            return result;
        }

    }

接下来是运算的类啦,这里我们先写加减乘除这四种操作吧:

   class OperationAdd:Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = Number1 + Number2;
            return result;
        }
    }
 class OperationSub:Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = Number1 - Number2;
            return result;
        }
    }
  class OperationMul:Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = Number1 * Number2;
            return result;
        }
    }
 class OperationDiv:Operation
    {
        public override double GetResult()
        {
            double result = 0;
            if (Number2==0)
            {
                throw new Exception("除数不能为0");
            }
            result = Number1 * Number2;
            return result;
        }
    }

然后再控制台我们要调用这些运算逻辑方法对不,怎么调用呢?这里再写一个简单工厂模式来选择:

  class OpertionFactory
    {
        public static Operation createOperation(string Operate)
        {
            Operation oper = null;
            switch (Operate)
            {
                case "+":
                    oper = new OperationAdd();
                    break;
                case "-":
                    oper = new OperationSub();
                    break;
                case "*":
                    oper = new OperationMul();
                    break;
                case "/":
                    oper = new OperationDiv();
                    break;             
            }
            return oper;

        }
    }

这个简单工厂模式就是为了选择运算逻辑而存在的。

最后,我们在控制台来实现一下吧:

 class Program
    {
        static void Main(string[] args)
        {
            Operation oper;
            oper = OpertionFactory.createOperation("+");        //我这里写死了,就是测试一下
            oper.Number1 = 1;
            oper.Number2 = 0;
            double result = oper.GetResult();
            Console.WriteLine(result);
            Console.ReadLine();
        }
    }

 

  这样,一个计算器的代码就写完了,相比于4个if语句或者是switch语句,这种方式要好很多,如果要添加新的运算,例如开平方,求余运算等等...我都可以添加一个相应的逻辑运算,然后在简单工厂模式的OperationFactory类里面添加分支就好了。不会影响其他的逻辑运算代码,后台与前台代码也是分开的

 

以上是关于利用面向对象写一个计算器的主要内容,如果未能解决你的问题,请参考以下文章

js-6

VSCode自定义代码片段——JS中的面向对象编程

简单工厂模式---计算器

VSCode自定义代码片段9——JS中的面向对象编程

利用面向对象写的登录与注册

计算机专业研究生核心能力培养——如何更好的写代码