zoukankan      html  css  js  c++  java
  • 面向编程对象的好处及应用紧耦合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()方法

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

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

  • 相关阅读:
    rzchecktree用作类别权限的问题
    VirtualStringTree 动态建树/Checktree
    一键处理打印机因任务不能取消,无法接着打印
    Delphi从Internet下载文件
    仿迅雷客户端的浏览器自定义协议的小程序
    用最少的代码为你的窗体实现剪贴板操作
    delphi2010获取鼠标指向窗口的位置及鼠标在窗口内的相对位置坐标
    datasnap 上传/下载大文件(本Demo以图传片文件为例)
    dephi中用idhttp提交cookie
    delphi2010 向另一个窗口发送鼠标点击事件
  • 原文地址:https://www.cnblogs.com/zaohuojian/p/11484078.html
Copyright © 2011-2022 走看看