面向编程对象的好处及应用紧耦合VS松耦合(继承,多态)(1-2)

面向编程对象的好处及应用紧耦合VS松耦合(继承,多态)(1-2)

  1. 当初:

    • 代码是做了客户端与业务的分离的封装
  2. 现在:

    • 加深下功底,在上一个随笔之前做一个修改和拓展(继承,多态)
  3. 作业:

    • 现在从计算器变成薪资管理
    • 现在有 技术人员(月薪),销售人员(底薪+提成),经理(年薪+股份)三种运算
    • 课后作业 自己增加兼职工作人员(时薪)算法

可以参考之前的面向编程对象的好处及应用继承随笔

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()方法

这样就不需要提供其他的算法代码了,但问题是计算器怎么知道我想用哪一个算法呢?

未完待续……下一篇随笔会更新用法 简单工程模式

原文地址:https://www.cnblogs.com/zaohuojian/p/11484078.html