使用C#面向对象实现简易计算器(简单工厂模式)
2024-09-01 20:12:43
操作流程:
1. 新建Operation
类
2. 新建OperationAdd
类,并继承Operation
类
3. 新建OperationSub
类,并继承Operation
类
4. 新建OperationMul
类,并继承Operation
类
5. 新建OperationDiv
类,并继承Operation
类
6. 新建创造实例的工厂类OperationFactory
7. Main
方法操作根据传入的运算符创造相对应的操作类,并执行相对应的运算逻辑
1、新建Operation
类
public class Operation
{
public double numberA { get; set; }
public double numberB { get; set; }
public virtual double getResult()
{
return 0;
}
}
2. 新建OperationAdd
类,并继承Operation
类
public class OperationAdd : Operation
{
//实现操作加法运算
public override double getResult()
{
double result = 0;
result = numberA + numberB;
return result;
}
}
3. 新建OperationSub
类,并继承Operation
类
public class OperationSub : Operation
{
//实现减法操作
public override double getResult()
{
double result = 0;
result = numberA - numberB;
return result;
}
}
4. 新建OperationMul
类,并继承Operation
类
public class OperationMul : Operation
{
//实现乘法操作
public override double getResult()
{
double result = 0;
result = numberA * numberB;
return result;
}
}
5. 新建OperationDiv
类,并继承Operation
类
public class OperationDiv : Operation
{
//实现除法操作
public override double getResult()
{
double result = 0;
if (numberB == 0)
throw new Exception("除数不能为0");
result = numberA / numberB;
return result;
}
}
6. 新建创造实例的工厂类OperationFactory
public class OperationFactory
{
public static Operation CreateOperate(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;
default:
break;
}
return oper;
}
}
7. Main
方法操作根据传入的运算符创造相对应的操作类,并执行相对应的运算逻辑
class Program
{
static void Main(string[] args)
{
try
{
Operation oper = OperationFactory.CreateOperate("+");
oper.numberA = 3;
oper.numberB = 2;
double result = oper.getResult();
Console.WriteLine(result);
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
throw;
}
}
}
最新文章
- WPF获取应用程序启动目录的方法
- 【接口测试】jmeter的使用
- 3.openstack之mitaka搭建keystone认证服务
- PAT (Basic Level) Practise:1019. 数字黑洞
- python zip enumerate函数
- ltib学习抄录
- leetcode 26
- java 下载spring的方法
- java基础之代理
- Android doGet方法
- 杭电OJ——1007 Quoit Design(最近点对问题)
- 零积分下载,2014年辛星mysql教程秋季版第一本已经完工,期待您的支持
- ASP.NET MVC创建的网站
- hdu_5874_Friends and Enemies(公式题)
- localStorage , sessionStorage ,cookie 使用介绍
- 获取SQL中某一列的类型及精度
- nginx的5个特点
- 【转载】阿里云轻量应用型服务器和ECS服务器比较
- Hadoop生态圈-Ambari控制台功能简介
- kbmmw 5.04 发布