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

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

时间: 2024-10-16 23:06:06

利用面向对象写一个计算器的相关文章

Java小练习之利用面向对象写一个简单的登录系统

import java.util.Scanner; /** * 采用面向对象的方式 写一个登录系统 * @author Administrator * */ //用户信息 class UserInfo{ public static String[] user = new String[10]; public static String[] passwd = new String[10]; public UserInfo() { this.user[0] = "test"; this.p

用VBA写一个计算器

着急的 玩家 可以 跳过“============”部分 ======================================可以跳过的 部分   开始====================================================== 之所以 要有今天这样一篇博客是因为. 之前领导让找几组数据.从excel表格里面. 要求是 主号码 一致,副号码 一致,名称为 XXX 的 项目发生变化的数据 需要被找到. 这样的 项目 有 11个. 我找的真的是眼要花. 变动前

如何写一个计算器

考虑这样一个问题,给定一个字符串,"1+1+(3+4)-2*3+8/2",如何将它转化为如下形式, "1+1=2" "3+4=7" "2+7=9" "2*3=6" "9-6=3" "8/2=4" "3+4=7" 换句话说,就是如何将字符串按照四则运算计算出来,如何写一个计算器.拿java来举例,并且为了简单,我们只考虑个位数.这个过程大概分为这几个

用PHP写一个计算器

本篇文章介绍了使用PHP+HTML+Javascript技术编写一个计算器的方法,希望对各位学习PHP开发的同学有帮助! 用PHP写一个计算器 <body> <?php if (!empty($_POST)) { $op=$_POST['point']; $sum1 = $_POST['sum1']; $sum2 = $_POST['sum2']; $sum = 0; if ($sum1 != '' && is_numeric($sum1) && $sum

如何利用CSS写一个六边形?

众所周知,一般情况下div所表现出来的形态是一个矩形,如果给它添加border-radius属性,可以让它成为一个圆角矩形或者是圆形,但是如果希望div表现出更多的形态来呢? 那么我们就来讲讲如何用CSS来写一个六边形. 大家首先来看一下,一个六边形,拆解开来的话,就是一个矩形加左右两个三角形. 三角形的话很好写,用边框border属性就可以实现. 当我们给一个div非常粗的边框,但是宽度和高度分别都设置为0的时候,我就会得到如下的图形. 那么我们只要把其中一条边框给删除,另外两条边框变成透明,

利用Python写一个闰年计算器和每月天数计算器

闰年计算器 题目:输入年份,判断该年是否为闰年. 方法:1.能被400整除的年份 2.能被4整除,但不能被100整除 1 print('---闰年判断器kql,按q退出---') 2 while True: 3 y = input('请输入年份:') 4 if (y == 'q'): 5 break 6 y = int(y) 7 if (y % 400 == 0 or (y % 4 == 0 and y % 100 != 0)): 8 print(y,'年为闰年!') 9 else: 10 pr

利用React写一个评论区组件(React初探)

本文是在阅读学习了官方的React Tutorial之后的整理,实例链接. 开始使用React 首先从官方获取React.js的最新版本(v0.12.2),或者下载官方的Starter Kit,并在我们的html中引入它们: <head> <meta charset="UTF-8"> <title>React Test Page</title> <script src="../build/react.js">

今天学习了在一般处理程序中写一个计算器

今天看了看前面的javascript以及学习的jquery,感觉刚开始学习时间就赶得比较紧,练习是做啦,基础的知识都是知道的,但是在写一些小小的程序时间还是陌生,感觉练习的还是很不够的,其实怎么说那,想好好的学习还是把他们使用到项目中练习就会学习的更快些吧,然后我又做啦一个增删改查的一般处理程序,但是还没有总结好,现在就简单的先总结一个小小的计算器使用html和ashx来实现一下其功能,如下所示: 一.html样式 <script> //@Script; </script> <

用JS写一个计算器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ