码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-09-01 12:57:06      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:测试   case   add   actor   double   exception   四种   参考   write   

 

  本文参考了程杰的《大话设计模式》,使用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类里面添加分支就好了。不会影响其他的逻辑运算代码,后台与前台代码也是分开的

 

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

标签:测试   case   add   actor   double   exception   四种   参考   write   

原文地址:http://www.cnblogs.com/yunquan/p/7462554.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!