首先分析计算器有加减乘除,取模,求余等计算方式,所以我们在创建了这个类的同时就应该想到后期肯定需要进行这方面的扩展,所以在设计的时候就应该尽量不修改原有代码的前提下进行功能的扩展,也就是降低对象之间的耦合度。

废话不多说,代码如下:

namespace Program
{//显示抽象类public abstract class Print{public decimal Result { get; set; }public Print(decimal result){this.Result = result;}public abstract void print();}public class shuchu1 : Print{public shuchu1(decimal result) : base(result) { }public override void print(){Console.WriteLine("输出方式1输出" + Result);}}public class shuchu2 : Print{public shuchu2(decimal result) : base(result) { }public override void print(){Console.WriteLine("输出方式2输出" + Result);}}//计算抽象类public abstract class Opreation{public decimal Num1 { get; set; }public decimal Num2 { get; set; }public virtual decimal OpreationNum(){decimal result = 0;return result;}}#region CalculateMode//加法运算public class addition : Opreation{public override decimal OpreationNum(){return this.Num1 + this.Num2;}}//减法public class subtraction : Opreation{public override decimal OpreationNum(){return this.Num1 - this.Num2;}}public class multiplication : Opreation{public override decimal OpreationNum(){return this.Num1 * this.Num2;}}public class division : Opreation{public override decimal OpreationNum(){return this.Num1 / this.Num2;}}#endregionpublic abstract class CalculateFactory{public abstract Opreation Calculate();}#region CalculateFactorypublic class AddtionFactory : CalculateFactory{public override Opreation Calculate(){return new addition();}}public class SubtractionFactory : CalculateFactory{public override Opreation Calculate(){return new subtraction();}}public class MultiplicationFactory : CalculateFactory{public override Opreation Calculate(){return new multiplication();}}public class DivisionFactory : CalculateFactory{public override Opreation Calculate(){return new division();}}#endregion//取模计算public class Molding : Opreation{public override decimal OpreationNum(){return this.Num1 % this.Num2;}}//取模工厂public class MoldingFactory : CalculateFactory{public override Opreation Calculate(){return new Molding();}}//取模值显示方式public class shuchu3 : Print{public shuchu3(decimal result) : base(result) { }public override void print(){Console.WriteLine("显示方式3输出" + Result);}}public class Calculator{static void Main(string[] args){CalculateFactory opreationAddtion = new AddtionFactory();Opreation addition = opreationAddtion.Calculate();addition.Num1 = 10;addition.Num2 = 20;Print print1 = new shuchu1(addition.OpreationNum());print1.print();CalculateFactory opreationSubtraction = new SubtractionFactory();Opreation Subtraction = opreationSubtraction.Calculate();Subtraction.Num1 = 30;Subtraction.Num2 = 10;Subtraction.OpreationNum();Print print2 = new shuchu2(Subtraction.OpreationNum());print2.print();CalculateFactory opreationMolding = new MoldingFactory();Opreation molding = opreationMolding.Calculate();molding.Num1 = 10;molding.Num2 = 8;Print print3 = new shuchu3(molding.OpreationNum());print3.print();}}
}

面向对象编写一个计算器相关推荐

  1. java编写计算类加减乘除_老师要求张浩使用面向对象的思想编写一个计算器类(Calculator),可以实现两个整数的加减乘除的运算.java...

    导航:网站首页 > 老师要求张浩使用面向对象的思想编写一个计算器类(Calculator),可以实现两个整数的加减乘除的运算.java 时间:2019-4-10 老师要求张浩使用面向对象的思想编 ...

  2. 我们知道计算机的大小单位有 B, KB, MB 等,现在请你编写一个计算器进行大小单位换算。Java洛谷传智杯

    题目描述: 我们知道计算机的大小单位有 B, KB, MB 等,现在请你编写一个计算器进行大小单位换算. 输入格式:输入一个字符串,由一个 0 到 1023 之间的整数,一个单位名称(大写字母),一个 ...

  3. java编写某计算器控制台程序_用java程序编写一个计算器

    点击查看用java程序编写一个计算器具体信息 答:给你一个参考,希望不要被百度吞了当晚餐 import java.awt.BorderLayout; import java.awt.GridLayou ...

  4. 请用python3编写一个计算器的控制台程序_二、软件工程慕课第一章作业题——编写一个计算器...

    一.题目描述 请用Python3编写一个计算器的控制台程序,支持加减乘除.乘方.括号.小数点,运算符优先级为括号>乘方>乘除>加减,同级别运算按照从左向右的顺序计算. 二.输入描述 ...

  5. 安卓(Android studio)编写一个计算器,可以连续加减乘除,可加小数点,不包含括号以及加减乘除优先算法。

    安卓(Android studio)编写一个计算器,可以累加,可加小数点,不包含括号以及加减乘除优先算法. 首先需要在res目录下的layout文件下创建一个xml文件进行界面的布局设计,接着在Jav ...

  6. java calculator类_java里使用面向对象的思想编写一个计算器类(Calculator),可以实现两个数的加、减、乘、除运算...

    展开全部 package calculate; import java.math.BigDecimal; import java.math.BigInteger; import java.util.r ...

  7. 用java编写一个计算器_用java程序编写一个计算器

    展开全部 给你一个参考,希望不62616964757a686964616fe58685e5aeb931333330343261要被百度吞了当晚餐 import java.awt.BorderLayou ...

  8. java 写一个计算器_java编写一个计算器类

    展开全部 import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import java.aw ...

  9. C++多态的练习——编写一个计算器项目

    要想成为一个合格的程序员,必须要有多态的思想. 计算器项目剖析: 1.输入一个数字,然后输入一个操作符,接着输入一个数字,按等号输出结果 2.四则运算有四种,+ - * / ,输出都是对输入的两个数进 ...

最新文章

  1. python特性(八):生成器对象的send方法
  2. react 子组件获取变量属性值
  3. 如何使python等待按键
  4. linux系统安装nginx步骤,虚拟机(linux)下安装nginx的步骤教程
  5. 计算机课程大作业答案,计算机接口技术课堂大作业(1)参考答案
  6. 你真的了解.NET中的String吗?
  7. Nagios监控平台完全攻略 (二)
  8. Struts2中的全局结果集
  9. 在linux系统下挂接(mount)光盘镜像文件、移动硬盘、U盘以及Windows网络共享和UNIX...
  10. 项目中坑记录:mongo 插入失败无提示
  11. 【转】Topshelf 搭建 Windows 服务
  12. 机器学习读书笔记: 概率图模型
  13. 全新的SharePoint 2019
  14. STM32 输入捕获 测量频率 PWM占空比
  15. RTI路由服务---跨多个平台,系统和网络扩展和集成DDS系统
  16. python音频频谱_小白音频测试之Python对音频进行频谱分析
  17. SqlParameter[]写法
  18. Smart-link 实验(超详细)
  19. 视频监控网络使用PON网络传输解决方案相关问题解答
  20. 【学习心得】Selenium3自动化测试实战——基于Python(虫师)

热门文章

  1. android里的 ARGB 和 RGB
  2. WeX5 BeX5 页面框架核心之数据绑定2021-11-15
  3. c++ 十六进制转字符串(ASCII码)
  4. java8/日期时间
  5. 百度富文本编辑器(ueditor)样式错误,回显出现#39、quot
  6. (实战)[re:Invent 2018]-001:赛道分析-(致敬1024)
  7. 441_MPLAB X中导入MPLAB工程
  8. EasyExcel与EasyPoi性能对比
  9. 锤子官方再曝新手机 暗示坚果Pro采用新后壳
  10. PHP5.4发布:新特性与改动