10.7 面向对象技术章节回顾
本章回顾的重点不是把前面标题再列一遍,而是把考试中的判断路径固定下来。面向对象技术在软设考试中大约 11 分,考察集中,很多题属于“概念清楚就能拿分”的类型。
本章一张图
mermaid
flowchart TB
OO["第10章 面向对象技术"]
OO --> Base["面向对象基础\n约2-4分"]
OO --> UML["UML\n约3-4分"]
OO --> Pattern["设计模式\n约4分"]
Base --> B1["类/对象/封装/继承/多态/动态绑定"]
Base --> B2["OOA/OOD/设计原则"]
UML --> U1["图的识别"]
UML --> U2["关系与多重度"]
UML --> U3["下午UML建模"]
Pattern --> P1["23种模式分类"]
Pattern --> P2["场景与意图"]
Pattern --> P3["类图与特殊方法"]面向对象基础怎么复盘
这一部分主要考名词、定义、边界。复盘时不要只看自己选错了哪个选项,而要写出“相邻概念怎么区分”。
| 易混概念 | 区分方法 |
|---|---|
| 类 vs 对象 | 类是抽象模板,对象是运行时实例 |
| 属性 vs 状态 | 属性是对象特征,状态是属性在某时刻的取值组合 |
| 继承 vs 泛化 | 编程里常说继承,UML 语义里父类是子类的泛化 |
| 重载 vs 重写 | 重载同名不同参数,重写子类覆盖父类方法 |
| 多态 vs 动态绑定 | 多态是现象,动态绑定是运行时确定方法的机制 |
| OOA vs OOD | OOA 面向问题域识别对象,OOD 面向解空间设计职责和协作 |
错题模板:
text
题干关键词:______
考点概念:______
易混概念:______
一句话区分:______UML怎么复盘
UML 题的核心是识图和识关系。
| 题型 | 解题动作 |
|---|---|
| 问是什么图 | 找图形线索:生命线、小人椭圆、粗实线、节点、构件图标 |
| 问关系是什么 | 看箭头、菱形、虚实线、关键字 include/extend |
| 问多重度 | 站在一个对象的角度数对方对象数量 |
| 问顺序图方法归属 | 消息箭头指向谁,方法通常属于谁 |
| 问对象图一致性 | 用对象连接数量反查类图多重度 |
UML 关系复盘表:
| 关系 | 复盘句 |
|---|---|
| 依赖 | 使用方临时依赖被使用方,虚线箭头常见 |
| 关联 | 类之间有结构连接,可标多重度和角色 |
| 聚合 | 整体-部分,部分可独立存在 |
| 组合 | 强整体-部分,生命周期联系更紧密 |
| 泛化 | 子类指向父类,表示“一种” |
| 实现 | 实现类指向接口 |
| include | 基本用例必然执行公共用例,箭头指公共用例 |
| extend | 条件满足才执行扩展用例,箭头指基本用例 |
设计模式怎么复盘
设计模式是本章重点也是难点。复盘要按三个层次来:
- 模式识别:场景或类图告诉你是哪一个模式。
- 分类判断:创建型、结构型、行为型。
- 意图/结构细节:这个模式解决什么问题,类图里哪个角色负责什么。
| 判断入口 | 例子 |
|---|---|
| 应用场景 | “复杂对象构建与表示分离” -> Builder |
| 英文类名 | State、Command、Visitor、Builder |
| 特殊方法 | clone() -> Prototype,execute() -> Command,accept()/visit() -> Visitor |
| 结构关系 | 两个变化维度组合 -> Bridge;一对多通知 -> Observer |
设计模式常见错题归因
| 错因 | 修正方法 |
|---|---|
| 只背中文名,不认英文名 | 建立中英对照表,每天快速过一遍 |
| 看到“接口”就选适配器 | 区分接口转换、统一入口、接口实现 |
| 把状态和策略混在一起 | 状态封装“状态”,策略封装“算法” |
| 把桥接和访问者混在一起 | 桥接组合两个维度;访问者用一种操作遍历对象结构 |
| 把观察者和中介者混在一起 | 观察者是自动通知;中介者是集中协调交互 |
| 不看题干问“一致”还是“不一致” | 先圈题眼,再比对选项 |
下午题提示
本章理论会进入下午题:
| 上午知识 | 下午可能怎么用 |
|---|---|
| UML 类图 | 补类名、属性、方法、关系 |
| 用例图 | 补参与者、用例、include/extend |
| 顺序图 | 通过消息方向判断方法属于哪个类 |
| 设计模式类图 | 识别模式后补抽象类、具体类、接口方法 |
| 特殊方法 | buildPart()、getResult()、execute()、accept()、visit() |
因此下午题复习不要等到案例章节才开始。现在先把 UML 图和设计模式类图看懂,后面做代码填空会轻很多。
最小复习清单
考前快速过本章,可以按这个清单:
- 面向对象基础:类、对象、封装、继承、泛化、多态、动态绑定、重载、重写。
- UML 图:类图、对象图、用例图、顺序图、通信图、活动图、状态图、构件图、部署图。
- UML 关系:依赖、关联、聚合、组合、泛化、实现、include、extend。
- 设计模式分类:创建型 5、结构型 7、行为型 11。
- 设计模式关键词:唯一实例、产品族、构建与表示分离、接口转换、两个变化维度、动态职责、一对多通知、状态改变行为、算法互换、visit/accept。
例题
解决接口不兼容问题的设计模式是:
通过消息箭头方向推断方法属于哪个类,主要用到:
自查要点
- 本章三块内容各自最常考什么?
- UML 题如何从“识图”推进到“识关系”?
- 设计模式题的三层判断路径是什么?
- 哪些特殊方法名可以帮助识别设计模式?