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

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

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

  • 相关阅读:
    Android View 的绘制流程
    Android Studio 注释模板
    Flutter https://flutter.cn/docs学习之 工作原理
    Android 手机兼容差异
    Flutter plugin的两种方式
    本周总结
    mapreduce程序开发简单实例 WordCount
    《需求工程——软件建模与分析》阅读笔记之一
    本周总结
    本周总结
  • 原文地址:https://www.cnblogs.com/zaohuojian/p/11484078.html
Copyright © 2011-2022 走看看