面向编程对象的好处及应用紧耦合VS松耦合(继承,多态)(1-2)
- 当初:
- 代码是做了客户端与业务的分离的封装
- 现在:
- 加深下功底,在上一个随笔之前做一个修改和拓展(继承,多态)
- 作业:
- 现在从计算器变成薪资管理
- 现在有 技术人员(月薪),销售人员(底薪+提成),经理(年薪+股份)三种运算
- 课后作业 自己增加兼职工作人员(时薪)算法
可以参考之前的面向编程对象的好处及应用继承随笔
Operation运算类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesignModel
{
/// <summary>
/// Operation 运算类
/// </summary>
public class Operation
{
private double _numberA = 0;
private double _numberB = 0;
public double NumberA
{
get { return _numberA; }
set { _numberA = value; }
}
public double NumberB
{
get { return _numberB; }
set { _numberB = value; }
}
//virtual父类
public virtual double GetResult()
{
double result = 0;
return result;
}
}
}
加减乘除类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DesignModel
{
//全部继承于Operation类
//override改写父类
#region 加法类
public class OperationAdd:Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA + NumberB;
return result;
}
}
#endregion
#region 减法类
public class OperationSub:Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA - NumberB;
return result;
}
}
#endregion
#region 乘法类
public class OperationMUl:Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA * NumberB;
return result;
}
}
#endregion
#region 除法类
public class OperationDiv:Operation
{
public override double GetResult()
{
double result = 0;
if (NumberB==0)
{
throw new Exception("除数不能为0");
}
result = NumberA / NumberB;
return result;
}
}
#endregion
}
总结
面向对象三大特性之一 继承多态
定义了两个Number属性
定义了一个虚方法GetResult(),用于得到结果
加减乘除类写成了子类,继承Operation类,重写GetResult()方法
这样就不需要提供其他的算法代码了,但问题是计算器怎么知道我想用哪一个算法呢?
未完待续……下一篇随笔会更新用法 简单工程模式