Appearance
考点清单
- [x] OO 三大特性(封装/继承/多态)
- [x] OO 设计五大原则(开闭/里氏替换/依赖倒置/单一职责/最少知识)
- [x] OOA 5层5活动
- [x] OOD 三种类(实体类/边界类/控制类)
- [x] UML 四种事物与六种关系
- [x] 用例图(组成/关系/构建阶段)
- [x] 关键 UML 图用途速查
笔记
一、OO 三大特性 ★
🎯 一句话结论:封装隐藏细节、继承复用代码、多态同一接口不同实现。
| 特性 | 核心概念 | 考试关键词 |
|---|---|---|
| 封装 | 隐藏对象内部状态,仅通过公共接口访问 | "将数据和方法绑定"、"信息隐藏" |
| 继承 | 子类获得父类的属性和方法 | "泛化关系"、多重继承 |
| 多态 | 同一接口可以有不同的实现 | "同一接口不同实现"、"子类重写父类方法" |
二、OO 设计五大原则 ★
🎯 一句话结论:开闭是总纲(对扩展开放、对修改关闭),依赖倒置是手段(针对接口编程)。
| 原则 | 一句话 | 考试关键词 |
|---|---|---|
| 开闭原则 OCP | 不修改原有代码即可变更行为 | "增加字母校验码,不应修改原有代码" |
| 里氏替换 LSP | 子类可以替换父类,不改参数/返回值/不抛新异常 | "子类方法返回类型与父类完全一致" |
| 依赖倒置 DIP | 抽象不依赖细节,细节依赖抽象;针对接口编程 | "针对接口编程,不针对实现编程" |
| 单一职责 SRP | 一个类只有一个引起变化的原因 | "一个类只做一件事" |
| 最少知识 LKP | 迪米特法则,最少知识原则 | "减少类之间的交互" |
⚠️ 常见坑:开闭原则→修改封闭/扩展开放;依赖倒置→针对接口不是针对实现。里氏替换的核心是子类行为必须与父类承诺一致。
三、OOA 5层5活动 ★
🎯 一句话结论:面向对象分析 = 5个层次 + 5个活动。
5个层次: 类与对象层 → 属性层 → 服务层 → 结构层 → 主题层
5个活动:
- 标识对象类
- 标识结构 — 识别泛化关系和整体-部分关系
- 定义主题
- 定义属性
- 定义服务
OOA 基本原则: 抽象、封装、继承、分类、聚合、关联、消息通信(不含"耦合")
四、OOD 三种类 ★★
🎯 一句话结论:实体类存数据、边界类管界面、控制类协调流程。 考试高频考题!
| 类型 | 职责 | 典型实例 |
|---|---|---|
| 实体类 | 映射需求中的实体,保存持久化信息 | 用户、课程、订单、商品 |
| 边界类 | 封装用例内外流动的信息或数据流 | 窗口、通信协议、商品信息页面 |
| 控制类 | 协调用例工作的类,处理业务逻辑和流程控制 | 身份验证、订单结算、用户登录 |
⚠️ 常见坑:OOD 三种类不包括数据类、抽象类、接口类(这些是迷惑选项)。"用户登录"本身是控制类,"用户登录页面"是边界类,"用户"是实体类。
五、UML 四种事物与六种关系 ★
🎯 一句话结论:结构事物描述静态(类/接口/构件),行为事物描述动态(交互/状态)。
四种事物:
| 事物类型 | 说明 | 例子 |
|---|---|---|
| 结构事物 | 模型的静态部分,描述概念或物理元素 | 类、接口、构件、节点 |
| 行为事物 | 模型的动态部分,描述跨越时间和空间的行为 | 交互、状态机 |
| 分组事物 | 模型的组织部分 | 包 |
| 注释事物 | 模型的解释部分 | 注释 |
六种关系:
| 关系 | 说明 | 考试关键词 |
|---|---|---|
| 依赖 | 一个事物变化影响另一个 | 使用、调用 |
| 关联 | 类之间的结构关系 | Student 选 Course |
| 聚合 | 整体-部分(弱包含,部分可独立) | University → Student |
| 组合 | 整体-部分(强包含,同生命周期) | University → Department |
| 泛化 | 特殊/一般,子类替换父类 | 继承 |
| 实现 | 接口与实现的关系 | implements |
⚠️ 关键辨析:聚合(空心菱形)vs 组合(实心菱形)— 聚合的部分可独立存在,组合的部分生命周期与整体一致。
六、用例图 ★
🎯 一句话结论:用例图三要素 = 参与者 + 用例 + 通信关联,用例之间有 包含、扩展、泛化 三种关系。
构建用例模型4阶段: 识别参与者 → 合并需求获得用例 → 细化用例描述 → 调整用例模型(前3个是必需的)
用例关系:
| 关系 | 说明 | 典型例子 |
|---|---|---|
包含 <include> | 必选的,抽取公共行为 | 登录系统 包含于 注册课程 |
扩展 <extend> | 可选的,条件触发 | 参加补考 扩展自 参加考试 |
| 泛化 | 父用例到子用例 | 支付 泛化出 支付宝支付 |
七、关键 UML 图用途速查
| 图类型 | 类别 | 主要用途 |
|---|---|---|
| 用例图 | — | 描述系统功能需求,用户与系统交互 |
| 类图 | 结构图 | 类内部属性和行为,类之间交互关系 |
| 对象图 | 结构图 | 某一时刻对象实例的静态快照 |
| 包图 | 结构图 | 组织类,表示总体框架结构 |
| 组件图 | 结构图 | 物理组件及依赖关系 |
| 部署图 | 结构图 | 软件到硬件的映射、拓扑结构 |
| 序列图 | 行为图 | 对象间交互顺序和时间流程 |
| 通信图 | 行为图 | 对象间消息传递(协作) |
| 状态图 | 行为图 | 定义对象的内部行为,状态变迁 |
| 活动图 | 行为图 | 业务流程、并发分叉/汇合 |
⚠️ 常见坑:序列图(顺序图)属于面向对象设计(UML),不属于结构化设计工具。状态图描述单个对象的生命周期,活动图描述流程。