- using System;
- namespace NMCounter
- {
- //run main class
- class CRunMain
- {
- public static int Main()
- {
- COperator objOpr = null;
- string strOpr;
- double duNum1 = 0.0;
- double duNum2 = 0.0;
- Console.WriteLine("please input first number: ");
- duNum1 = int.Parse(Console.ReadLine());
- Console.WriteLine("please input operation string:(+ - * /)");
- strOpr = Console.ReadLine();
- objOpr = COprFactory.CreateOperator(strOpr);
- if (null == objOpr)
- {
- Console.WriteLine("error operator!");
- return 0;
- }
- Console.WriteLine("please input the second number:");
- duNum2 = int.Parse(Console.ReadLine());
- objOpr.m_du1 = duNum1;
- objOpr.m_du2 = duNum2;
- Console.WriteLine("the result = " + objOpr.GetRuesult());
- return 0;
- }
- };
- class COprFactory
- {
- public static COperator CreateOperator(string strType)
- {
- COperator objOpr = null;
- switch (strType)
- {
- case "+":
- objOpr = new COprAdd();
- break;
- case "-":
- objOpr = new COprSub();
- break;
- case "*":
- objOpr = new COprMul();
- break;
- case "/":
- objOpr = new COprDiv();
- break;
- default:
- objOpr = null;
- break;
- }
- return objOpr;
- }
- };
- //计算器实现类
- class COperator
- {
- public COperator()
- {
- this.m_duNum1 = 0;
- this.m_duNum2 = 0;
- }
- public virtual double GetRuesult()
- {
- return 0;
- }
- public double m_du1
- {
- get
- {
- return this.m_duNum1;
- }
- set
- {
- this.m_duNum1 = value;
- }
- }
- public double m_du2
- {
- get
- {
- return this.m_duNum2;
- }
- set
- {
- this.m_duNum2 = value;
- }
- }
- private double m_duNum1;
- private double m_duNum2;
- };
- class COprAdd:COperator
- {
- public COprAdd()
- {
- }
- public override double GetRuesult()
- {
- return this.m_du1 + this.m_du2;
- }
- }
- class COprSub:COperator
- {
- public COprSub()
- {
- }
- public override double GetRuesult()
- {
- return this.m_du1 - this.m_du2;
- }
- }
- class COprMul:COperator
- {
- public COprMul()
- {
- }
- public override double GetRuesult()
- {
- return this.m_du1 * this.m_du2;
- }
- }
- class COprDiv:COperator
- {
- public COprDiv()
- {
- }
- public override double GetRuesult()
- {
- if (Math.Abs(this.m_du2) < 0.00000001)
- {
- throw new Exception("除数不能为0!");
- }
- return this.m_du1 / this.m_du2;
- }
- }
- }
从简单计算器所想到的面向对象思想(C#源代码)
最新推荐文章于 2024-09-27 15:31:43 发布