总结:面向对象的三大特征和六大设计原则

  1. 面向对象的3大特征 封装【分】 继承【隔】 多态【做】
  2. 6大设计原则
    1、开闭原则 【总的指导思想】
    原理:对扩展开放,对修改关闭
    说明:增加新功能,不能修改原有代码
    实例:一个软件通过灵活的扩展来实现未来的变化,实现软件的复用、易于扩展
    2、依赖倒置 【继承的补充】
    原理:尽量依赖抽象(抽象不应该依赖细节,细节应该依赖抽象)
    说明:调用的类尽量使用抽象
    本质:通过抽象使各个类的实现彼此独立,互不影响,减少模块之间的依赖
    3、单一职责 【一个类的定义】
    原理:一个类有且只有一个改变它的原因。
    说明:一个类只负责一项职能(操作)
    4、组合复用 【复用的最佳实践】
    原理:如果仅仅为了代码复用选择组合复用,而非继承
    代码复用:继承、组合
    语义: 是1种 有1种
    说明:通过变量调用对象的方法
    5、迪米特法则 【类与类交互】
    原理:类与类之间交互时,在满足功能需求的基础上
    传递的数据越少越好【降低耦合度】
    说明:一个对象应该对其他的对对象有更少的了解,只需要提供公开的方法
    两个对象不必直接通信(通过第3个对象转发)
    6、里氏替换 【继承后的重写】
    原理:父类出现的地方可以被子类替换(在替换后保持原有功能)
    子类在重写父类方法时尽量选择扩展重写
'''
    创建一个员工管理类
        1、存储员工对象
        2、计算总薪资

    员工:
        1、程序猿: 底薪 + 项目分红
        2、测试员: 底薪 + bug数 × 10

    要求:
        增加新的员工对象,不要改变原有代码

    思考:
        哪些地方体现了6大设计原则   
'''
class EmployeeManager:
    def __init__(self):
        self.list_employ = []

    def add_employ(self, employ):
        if isinstance(employ, Employee):
            self.list_employ.append(employ)

    def calculate_salary(self):
        total_salary = 0
        for item in self.list_employ:
            total_salary += item.cal_salary()
        return total_salary

class Employee:
    def __init__(self, bsalary):
        self.salary_base = bsalary

    def cal_salary(self):
        return self.salary_base

class Programmer(Employee):
    def __init__(self, bsalary, bonus):
        super().__init__(bsalary)
        self.bonus = bonus

    def cal_salary(self):
        return super().cal_salary() + self.bonus

class Tester(Employee):
    def __init__(self, bsalary, bug_count):
        super().__init__(bsalary)
        self.bug_count = bug_count

    def cal_salary(self):
        return super().cal_salary() + self.bug_count * 10
employ = EmployeeManager()
p01 = Programmer(12000, 20000)
t01 = Tester(10000, 1200)
employ.add_employ(p01)
employ.add_employ(t01)
print(employ.calculate_salary())


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XU AE86

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值