Skip to content

面向对象基本概念

概念说明关键记忆
对象由数据及其操作构成的封装体,是构成系统的基本单位对象 = 对象名 + 属性 + 方法
实体的形式化描述,属性和操作封装在一起类是对象的模板,对象是类的实例
抽象通过特定实例抽取共同特征形成概念强调主要特征,忽略次要特征
封装信息隐蔽技术,将数据和操作封装成整体对数据访问只能通过对外接口进行
继承类之间的层次关系(父子)单继承/多继承,子类复用父类特征
多态不同对象收到同一消息产生不同结果由继承机制支持,通用消息放抽象层
接口描述操作规范说明只说明做什么,不定义如何做
消息对象间交互,向目标对象发送操作请求
覆盖(Override)子类重定义与父类同名同参的方法子类用自己的实现置换父类实现
函数重载(Overload)与子类父类无关,同名不同参数参数类型/个数/顺序不同
绑定过程调用和响应代码的结合过程静态绑定(编译时)/ 动态绑定(运行时)

覆盖 vs 重载:覆盖 = 子类重写父类同名同参方法;重载 = 同类同名不同参,与父子无关。

类的三种类型

类型说明示例
实体类表示现实世界真实实体人、物、客户
接口类(边界类)提供用户与系统交互方式窗口、对话框、二维码(人接口);数据收发的系统接口
控制类控制活动流,充当协调者业务逻辑控制器

多态的四种类型

类型说明
参数多态不同类型参数多种结构类型(泛型)
包含多态父子类型关系(子类型多态)
过载多态一个名字不同含义(重载)
强制多态强制类型转换

面向对象的分析

面向对象的分析:是为了确定问题域,理解问题。包含五个活动:认定对象、组织对象、描述对象间的相互作用、确定对象的操作、定义对象的内部信息。


OOA(面向对象分析):确认问题域,理解问题。分析模型 = 顶层架构图 + 用例与用例图 + 领域概念模型

面向对象需求建模

image.png

面向对象的设计

OOD(面向对象设计):设计模型包含 → 以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、描述复杂对象的状态图、描述流程化处理的活动图


面向对象设计原则

面向对象设计五大原则。

SOLID 设计原则

原则说明口诀
单一职责原则(SRP)一个类只负责一个功能领域中的相应职责一类一事
开闭原则(OCP)对扩展开放,对修改关闭加功能不修代码
里氏替换原则(LSP)子类可以替换父类出现,且不影响程序正确性子代父职
接口隔离原则(ISP)使用多个专门的接口比使用单一的总接口好接口要专一
依赖倒置原则(DIP)抽象不应依赖细节,细节应依赖抽象;针对接口编程,不针对实现编程依赖抽象不依赖具体

其他原则:最少知识原则(迪米特法则) — 一个对象应对其他对象有尽可能少的了解。合成复用原则 — 优先使用对象组合而非继承。

上述(1)(5)是面向对象方法中的五大原则。除了这五大原则之外,Robert C.Martin提出的面向对象设计原则还包括以下几个。

  • (6)重用发布等价原则。重用的粒度就是发布的粒度。
  • (7)共同封闭原则。包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。
  • (8)共同重用原则。一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。
  • (9)无环依赖原则。在包的依赖关系图中不允许存在环,即包之间的结构必须是一个直接的五环图形。
  • (10)稳定依赖原则。朝着稳定的方向进行依赖。
  • (11)稳定抽象原则。包的抽象程度应该和其稳定程度一致。

面向对象的测试

OOT(面向对象测试)四层级:

层级说明
算法层测试单个操作/方法
类层测试单个类的所有操作
模板层测试一组协同工作的类(模板/组件)
系统层测试整个系统