Appearance
考点清单
- [x] 面向对象基本概念(对象/类/抽象/封装/继承/多态/接口/消息/覆盖/函数重载/绑定)
- [x] 类的三种类型(实体类/接口类/控制类)
- [x] SOLID 原则(单一职责/开闭/里氏替换/接口隔离/依赖倒置)
- [x] 最少知识原则(迪米特法则)
- [x] 面向对象分析(OOA)/设计(OOD)/测试(OOT)
- [x] 面向对象测试层级(算法层/类层/模板层/系统层)
笔记
一、面向对象基本概念 ★
| 概念 | 说明 | 关键记忆 |
|---|---|---|
| 对象 | 由数据及其操作构成的封装体,是构成系统的基本单位 | 对象 = 对象名 + 属性 + 方法 |
| 类 | 实体的形式化描述,属性和操作封装在一起 | 类是对象的模板,对象是类的实例 |
| 抽象 | 通过特定实例抽取共同特征形成概念 | 强调主要特征,忽略次要特征 |
| 封装 | 信息隐蔽技术,将数据和操作封装成整体 | 对数据访问只能通过对外接口进行 |
| 继承 | 类之间的层次关系(父子) | 单继承/多继承,子类复用父类特征 |
| 多态 | 不同对象收到同一消息产生不同结果 | 由继承机制支持,通用消息放抽象层 |
| 接口 | 描述操作规范说明 | 只说明做什么,不定义如何做 |
| 消息 | 对象间交互,向目标对象发送操作请求 | — |
| 覆盖(Override) | 子类重定义与父类同名同参的方法 | 子类用自己的实现置换父类实现 |
| 函数重载(Overload) | 与子类父类无关,同名不同参数 | 参数类型/个数/顺序不同 |
| 绑定 | 过程调用和响应代码的结合过程 | 静态绑定(编译时)/ 动态绑定(运行时) |
覆盖 vs 重载:覆盖 = 子类重写父类同名同参方法;重载 = 同类同名不同参,与父子无关。
类的三种类型:
| 类型 | 说明 | 示例 |
|---|---|---|
| 实体类 | 表示现实世界真实实体 | 人、物、客户 |
| 接口类(边界类) | 提供用户与系统交互方式 | 窗口、对话框、二维码(人接口);数据收发的系统接口 |
| 控制类 | 控制活动流,充当协调者 | 业务逻辑控制器 |
二、多态的四种类型
| 类型 | 说明 |
|---|---|
| 参数多态 | 不同类型参数多种结构类型(泛型) |
| 包含多态 | 父子类型关系(子类型多态) |
| 过载多态 | 一个名字不同含义(重载) |
| 强制多态 | 强制类型转换 |
三、SOLID 设计原则 ★
面向对象设计五大原则。
| 原则 | 说明 | 口诀 |
|---|---|---|
| 单一职责原则(SRP) | 一个类只负责一个功能领域中的相应职责 | 一类一事 |
| 开闭原则(OCP) | 对扩展开放,对修改关闭 | 加功能不修代码 |
| 里氏替换原则(LSP) | 子类可以替换父类出现,且不影响程序正确性 | 子代父职 |
| 接口隔离原则(ISP) | 使用多个专门的接口比使用单一的总接口好 | 接口要专一 |
| 依赖倒置原则(DIP) | 抽象不应依赖细节,细节应依赖抽象;针对接口编程,不针对实现编程 | 依赖抽象不依赖具体 |
其他原则:最少知识原则(迪米特法则) — 一个对象应对其他对象有尽可能少的了解。合成复用原则 — 优先使用对象组合而非继承。
四、面向对象分析/设计/测试
OOA(面向对象分析):确认问题域,理解问题。分析模型 = 顶层架构图 + 用例与用例图 + 领域概念模型。
OOD(面向对象设计):设计模型包含 → 以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、描述复杂对象的状态图、描述流程化处理的活动图。
OOT(面向对象测试)四层级:
| 层级 | 说明 |
|---|---|
| 算法层 | 测试单个操作/方法 |
| 类层 | 测试单个类的所有操作 |
| 模板层 | 测试一组协同工作的类(模板/组件) |
| 系统层 | 测试整个系统 |