Appearance
考点清单
- [x] UML 结构(构造块/规则/公共机制)
- [x] 四种关系(依赖/关联/泛化/实现)+ 聚集 vs 组合
- [x] 类关系(关联/聚集/组合/泛化/依赖)
- [x] 静态图(类图/对象图/用例图/构件图/部署图)
- [x] 动态图(序列图/通信图/状态图/活动图)
- [x] 4+1 视图模型(逻辑/进程/实现/部署/用例)
- [x] 用例关系(包含/扩展/泛化)
- [x] OO 建模过程(用例模型→分析模型→设计模型)
笔记
一、UML 概述 ★
UML(统一建模语言)是可视化的建模语言,而非程序设计语言,支持从需求分析开始的软件开发全过程。
UML 三大结构:
| 组成部分 | 说明 |
|---|---|
| 构造块 | 事物(thing)+ 关系(relationship)+ 图(diagram) |
| 规则 | 构造块如何放在一起的规定 |
| 公共机制 | 达到特定目标的公共 UML 方法 |
二、四种关系 ★
| 关系 | 说明 | UML 表示 |
|---|---|---|
| 依赖(Dependency) | 一个事物发生变化会影响另一个事物,短暂非持久 | 虚线箭头 |
| 关联(Association) | 类之间的某种联系,通常是双向的 | 实线 |
| 泛化(Generalization) | 一般与特殊的关系(继承) | 实线空心三角箭头 |
| 实现(Realization) | 类实现接口 | 虚线空心三角箭头 |
聚集 vs 组合(关联的特殊类型):
| 对比 | 聚集(Aggregation) | 组合(Composition) |
|---|---|---|
| 关系强度 | 较弱 | 较强 |
| 整体-部分 | 部分可脱离整体独立存在 | 部分不能脱离整体单独存在 |
| 示例 | 大学→学生(学生可独立存在) | 大学→系(系不能脱离大学) |
口诀:聚集整体散,组合整体断。
三、UML 图分类 ★
静态图(描述系统静态结构)
| 图 | 说明 | 关键记忆 |
|---|---|---|
| 类图 | 系统的静态设计视图,展现类及其关系 | 最核心的静态图 |
| 对象图 | 展现某一时刻一组对象及关系 | 类图的实例 |
| 用例图 | 描述系统功能需求和参与者 | 需求分析阶段使用 |
| 构件图(组件图) | 展现一组构件之间的组织和依赖 | 物理实现层面 |
| 部署图 | 系统静态部署视图,软硬件映射 | 拓扑结构、系统安装 |
动态图(描述系统动态行为)
| 图 | 说明 | 关键记忆 |
|---|---|---|
| 序列图(顺序图) | 按时间顺序展示对象间交互 | 强调时间顺序 |
| 通信图(协作图) | 强调参加交互的对象的组织 | 强调对象组织结构 |
| 状态图 | 描述对象状态及状态转换 | 关注对象生命周期 |
| 活动图 | 特殊的状态图,描述活动流程 | 类似流程图,支持分支汇合 |
口诀:类对用构部 = 静态;序通状活 = 动态。序列看时间,通信看组织。
四、4+1 视图模型 ★
4+1 视图从 5 个视角描述软件架构,5 个视图结合才能反映全部内容。
| 视图 | 关注点 | 对应 UML 图 | 关心者 |
|---|---|---|---|
| 逻辑视图 | 系统功能需求 | 类图、对象图、状态图 | 最终用户 |
| 进程视图 | 运行特性、并发/分布/容错 | 活动图 | 系统集成人员 |
| 实现视图(开发视图) | 软件模块组织管理 | 包图、组件图 | 程序员 |
| 部署视图(物理视图) | 软件→硬件映射、拓扑结构 | 部署图 | 系统工程师 |
| 用例视图(场景) | 使4个视图有机联系 | 用例图 | 分析师/测试人员 |
五、用例建模 ★
参与者(Actor):与系统交互的外部实体,可以是人、外部系统、时间、设备(如打印机)。
用例关系三种类型:
| 关系 | 说明 | 典型场景 |
|---|---|---|
| 包含(Include) | 一个用例无条件使用另一个用例的行为 | 注册课程必先登录系统 |
| 扩展(Extend) | 一个用例在特定条件下扩展另一个用例 | 不及格才参加补考 |
| 泛化(Generalization) | 用例之间的继承关系 | 一般用例→特殊用例 |
六、OO 建模过程
利用 UML 构建三类模型:
| 模型 | 构建方式 | 产物 |
|---|---|---|
| 用例模型 | 分析需求行为,按 OO 原则划分为用例 | 用例图 + 顺序图 |
| 分析模型 | 在用例基础上抽象类,明确关系构建类图 | 类图 + 领域概念模型 |
| 设计模型 | 补充状态图/活动图/协作图等描述内部处理细节 | 完整 UML 模型 |