面向对象的概念与三大基本特征和五大基本原则
面向过程 | 面向对象 |
---|---|
把问题分解为单一的步骤,每个步骤使用函数实现,依次调用。 | 把问题分解为单一的步骤,对每一个步骤进行抽象后形成对象,不同对象之间相互调用,组合解决问题 |
三大基本特征 | 解释 | 优点 |
---|---|---|
封装 | 将抽象性函式接口的实现细节部分包装、隐藏起来的方法。是一种保护屏障,防止该类代码和数据被外部类定义的代码随机访问。访问该类的代码和数据必须通过严格的接口控制。修改实现代码时不用修改被调用的片段。可以增加程式码的安全性。 | 1.良好的封装能够减少耦合;2.类内部的结构可以自由修改;3.可以对成员变量进行更精确的控制;4.隐藏信息,实现细节。 |
继承 | 子类继承父类的特征和行为,使子类对象具有父类的实例域和方法(多态的前提,但增加了类的耦合性,同时打破封装性) | 减少代码臃肿 |
多态 | 同一个行为具有多个不同表现形式或形态的能力,必要条件为存在继承,重写及父类引用指向子类对象 | 1.消除类型间的耦合关系;2.可替换性;3.可扩充性;4.接口性;5.灵活性;6.简化性 |
五大基本原则 | 解释 |
---|---|
单一职责原则(Single-Reponsibility Principle) | 一个类功能要单一,不能包罗万象 |
开放封闭原则(Open-Closed Principle) | 一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的 |
Liskov替换原则(Liskov-Substituion Principle) | 子类应当可以替换父类并出现在父类能够出现的任何地方 |
依赖倒置原则(Dependency-Inversion Principle) | 模块间的依赖通过抽象发生,实现类之间不发生直接依赖关系,依赖关系通过接口或抽象类产生。接口或抽象类不依赖实现类。实现类依赖接口或抽象类。 |
接口隔离原则(Interface-Segregation Principle) | 模块间要通过抽象接口隔离开,而不是通过具体的类强耦合起来 |