1、封装

首先是新建一个运算类(Calcultor.cs),它包含两个属性strNumA和strNumB,用以储存计算时的两个数,此外,还有一个虚方法Getresult(),用以得到运算的结果。

    public class calculator{/// <summary>/// 定义运算类的属性/// </summary>private double dblNumA = 0,dblNumB=0;/// <summary>/// 定义属性dblNumA的操作方法/// </summary>public double dblnuma{get { return dblNumA; }set { dblNumA = value; }}/// <summary>/// 定义属性dblNumB的操作方法/// </summary>public double dblnumb{get { return dblNumB; }set { dblNumB = value; }}/// <summary>/// 得到运算结果/// </summary>/// <returns>dblresult</returns>public virtual string GetResult(){string dblResult ="0";return dblResult;}}

2、继承

然后将操作加、减、乘、除写成运算类的子类,继承运算类后重写Getresult()。
    /// <summary>/// 加法类/// </summary>class OperationAdd : calculator{public override string GetResult(){string dblresult = "0";dblresult = (dblnuma + dblnumb).ToString();return dblresult;}}/// <summary>/// 减法类/// </summary>class OperationSub : calculator{public override string GetResult(){string dblresult = "0";dblresult = (dblnuma - dblnumb).ToString();return dblresult;}}/// <summary>/// 乘法类/// </summary>class OperationMul : calculator{public override string GetResult(){string dblresult = "0";dblresult = (dblnuma * dblnumb).ToString();return dblresult;}}/// <summary>/// 除法类/// </summary>class OperationDiv : calculator{public override string GetResult(){string dblresult = "0";if (dblnumb != 0){                dblresult = (dblnuma / dblnumb).ToString();}else{dblresult = "除数不能为0!";}return dblresult;}}

3、多态

再用一个单独的类创造实例的过程。
    public class factory{public static calculator createOperation(string strOperation){calculator cal = null;switch (strOperation){case "+":{cal = new OperationAdd();break;}case "-":{cal = new OperationSub();break;}case "*":{cal = new OperationMul();break;}case "/":{cal = new OperationDiv();break;}}return cal;}}

转载于:https://www.cnblogs.com/lzugis/archive/2013/03/30/6539938.html

面向对象下计算器的编码实现相关推荐

  1. linux下查看文件编码及修改编码

    linux下查看文件编码及修改编码 查看文件编码 在Linux中查看文件编码可以通过以下几种方式: 1.在Vim中可以直接查看文件编码 :set fileencoding 即可显示文件编码格式. 如果 ...

  2. Google App Engine for Java下的URL编码转换问题

    URL编码问题 此部分参考英文资料: http://www.blooberry.com/indexdot/html/topics/urlencoding.htm http://www.w3school ...

  3. linux mysql 编码修改,Linux下修改MySQL编码的方法

    这篇文章主要为大家详细介绍了Linux下修改MySQL编码的方法,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小编小韵来看看吧! 默认登录mysql之后可以通过SH ...

  4. 对象属性结构赋值_(六)面向对象-下

    (六)面向对象-下 关键字:static static 可以用来修饰的结构:主要用来修饰类的内部结构 属性.方法.代码块.内部类 static修饰属性:静态变量(类变量 属性,是否使用static修饰 ...

  5. Mac下文件的编码及修改编码

    在使用python3做NLP中文文本分类时,由于下载的搜狗语料库本身的编码有关系,本身编码是ASCII码,而我们需要以UTF-8来读取,所以就遇到如下不能显示中文文本的输出(mac下): u: {\r ...

  6. android计算器退格键,请问下计算器的退格键是哪个键?

    请问下计算器的退格键是哪个键? (2011-11-06 01:51:42) 标签: apple 杂谈 刚用taobaoyuangong.com的特价买的ipad2和iphone4s.即便阿谁号称代价6 ...

  7. linux下查看文件编码

    1.查看当前目录下所有文件编码: 查单个更改'*'就可以 find . -name '*' | xargs file 2.更换文件编码: iconv -f 源编码 -t 目标编码 原文件名 -o 输出 ...

  8. JavaSE---05面向对象(下)

    05 面向对象(下) 5.1 关键字:static 5.1.1 概念及使用 概念 1.static:静态的. 2.static 可以用来修饰:属性.方法.代码块.内部类.3.使用 static 修饰属 ...

  9. php面向对象编写计算器,使用面向对象的图形计算器,面向对象图形计算器_PHP教程...

    使用面向对象的图形计算器,面向对象图形计算器 这个例子可能并不实用,但基本概括了面向对象的三个特征:继承性,封装性,多态性.本例的主要功能有: 效果如下: 思路: 需要改进的地方: index.php ...

最新文章

  1. 【网络流】学习笔记:一次理解网络流!
  2. 修改服务器端的访问模式,ftp服务器端 修改主动模式
  3. select @@IDENTITY返回的id出错,select SCOPE_IDENTITY()代替
  4. element el-tree懒加载+搜索
  5. 表妹好奇地问的飞鸽传书
  6. 打印机测试图_INTAMSYS高温PEEK 3D打印机助力智能组件创新制造
  7. 什么是E-MapReduce
  8. 当前操作系统缺少黑体等字体_第十一章 枚举、结构体、联合体
  9. SVN MKACTIVITY
  10. 博图导入的程序用step7读出_博图软件TIA STEP7 V16 上载程序方法
  11. java11 http正式_Java11 HttpClient下载中文文件名称乱码
  12. spss分析qpcr数据_SPSS统计分析案例:Kappa一致性系数
  13. 韩语在线翻译图片识别_3个OCR文字识别工具,最后一个许多人都不知道!
  14. hdu 1212 Big Number
  15. Python实现csv与excel互转
  16. kotlin遍历数据同时删除之利用kotlin迭代器安全删除
  17. android手机是vivo吗,为什么最流畅的安卓手机竟然是VIVO和OPPO?
  18. 买天猫网店转让成为电商创业新趋势
  19. django集成Sphinx,为项目自动生成文档
  20. CMD控制台(命令提示符)的打开方式

热门文章

  1. UnityParticle1:粒子系统简介
  2. 人群与网络:网络流量博弈,拍卖、匹配市场
  3. HDU 5971 2016ICPC大连 A: Wrestling Match(二分图判断)
  4. Ubuntu16.04_Anaconda_TensorFlow(CPU)_py2.7及conda相关操作
  5. js系列教程5-数据结构和算法全解
  6. shell 免杀aspx_记一次aspx网站渗透
  7. MySQL(一)面试集合
  8. Nginx内置变量及正则语法
  9. 属性动画中同一个动画改变多个属性
  10. oracle服务端导出/导入方式expdp/impdp