# UML九图速查手册

> **用途**：考前快速回顾9种UML图的核心特征  

---

## 📊 九种UML图一句话定位

| 想表达什么？ | 用什么图？ |
|--------------|-----------|
| 系统能干什么？ | **用例图** |
| 系统里有哪些类？它们什么关系？ | **类图** |
| 某一刻对象的具体情况？ | **对象图** |
| 对象之间怎么按时间顺序交互？ | **顺序图** |
| 对象之间怎么在空间上协作？ | **协作图** |
| 一个对象的状态怎么变化？ | **状态图** |
| 一个业务流程步骤怎么走？ | **活动图** |
| 代码文件之间怎么依赖？ | **组件图** |
| 软件部署在哪些硬件上？ | **部署图** |

---

## 🔗 九图分类

```
UML图
├── 功能模型：用例图
├── 静态模型（结构）：类图、对象图、包图
├── 动态模型（行为）：顺序图、协作图、状态图、活动图
└── 物理模型（实现）：组件图、部署图
```

---

## 📋 九图完整对比表

| 图类型 | 分类 | 描述几个对象？ | 强调 | 核心元素 |
|--------|------|:---:|------|----------|
| **用例图** | 功能 | 多 | 系统功能全景 | 参与者、用例、系统边界 |
| **类图** | 静态结构 | 多 | 类的定义和关系 | 类、属性、操作、关系 |
| **对象图** | 静态结构 | 多 | 某一时刻的快照 | 对象、属性值、链 |
| **包图** | 静态结构 | 多 | 类的分组组织 | 包、依赖、泛化 |
| **顺序图** | 动态交互 | 多 | 消息的时间顺序 | 对象、生命线、控制焦点、消息 |
| **协作图** | 动态交互 | 多 | 对象的空间位置 | 对象、链、消息（带序号） |
| **状态图** | 动态行为 | **1个** | 状态如何变迁 | 状态、转移、事件 |
| **活动图** | 动态行为 | 多 | 流程步骤 | 活动、分支、泳道、分叉 |
| **组件图** | 物理实现 | 多 | 代码文件组织 | 组件、接口、依赖 |
| **部署图** | 物理实现 | 多 | 硬件拓扑 | 结点、组件、连接 |

---

## 🎨 各图关键语法速查

### 用例图
- 参与者 = 火柴人 🧑
- 用例 = 椭圆 ○
- 系统边界 = 方框 □
- 关系：包含 `<<include>>` (必然)、扩展 `<<extend>>` (条件)

### 类图
- 类 = 三格矩形（类名|属性|操作）
- 可见性：`+`公有 `-`私有 `#`受保护
- 六大关系：关联(实线)、聚合(空心菱形)、组合(实心菱形)、依赖(虚线)、泛化(空心三角)、实现(虚线空心三角)

### 顺序图
- 对象 + 生命线(虚线) + 控制焦点(矩形条) + 消息(箭头)
- 调用消息 = 实心箭头，异步消息 = 开放箭头
- 嵌套：1 → 1.1 → 1.1.1

### 协作图
- 对象 + 链(实线) + 消息(带序号)
- 必须标注消息序号！没有时间轴

### 状态图
- 状态 = 圆角矩形，转移 = 箭头
- 事件/ [条件] / 动作
- 初始状态 ● → 终态 ⊙

### 活动图
- 活动 = 圆角矩形
- 分支 = 菱形 ◇
- 分叉/汇合 = 粗横线
- 泳道 = 纵向分区

### 组件图
- 组件 = 带<<component>>的矩形
- 关系主要是依赖（虚线箭头）

### 部署图
- 结点 = 3D立方体
- 通信路径 = 实线

---

## 📐 MVC版型速查

| 版型 | 图标 | 职责 | 例子 |
|------|------|------|------|
| <<boundary>> 边界类 | 带竖线的圆 | 与外界交互 | 登录页面、购物车页面 |
| <<control>> 控制类 | 带箭头的圆 | 协调逻辑 | 订单处理、支付验证 |
| <<entity>> 实体类 | 带横线的圆 | 持久化数据 | 用户、订单、商品 |
