UML 核心知识复习指南
UML 核心知识复习指南
1. 静态结构图 (Structural Diagrams)
结构图描述系统的静态组成部分,即“系统里有什么”。
1.1 类图 (Class Diagram)
- 核心: 描述类、接口及其相互关系(继承、关联、聚合、组合)。
- 用途: 系统建模的基础,直接映射到面向对象代码。
- 绘制要点: 使用矩形表示类,分为类名、属性、方法三层。
深入理解六种关系 (Relationships)
类图之间的箭头不仅是连接,它们代表了类与类之间耦合度的强弱。
1) 泛化 (Generalization)
- 含义: 即“继承”关系。子类继承父类的所有特征。
- 符号: 实线 + 空心三角形箭头。
2) 实现 (Realization)
- 含义: 类实现接口的规范。
- 符号: 虚线 + 空心三角形箭头。
3) 关联 (Association)
- 含义: 类与类之间的长久连接(如:老师有学生)。通常作为成员变量存在。
- 符号: 实线箭头。
4) 依赖 (Dependency)
- 含义: 最弱的关系。一个类作为另一个类的方法参数或局部变量使用(“用到”的关系)。
- 符号: 虚线箭头。
5) 聚合 (Aggregation)
- 含义: “整体与部分”的关系,但部分可以离开整体独立存在(如:公司与员工)。
- 符号: 实线 + 空心菱形。
6) 组合 (Composition)
- 含义: 强关联的“整体与部分”。部分不能离开整体(如:公司与部门,公司倒闭部门即消失)。
- 符号: 实线 + 实心菱形。
3. 多重性 (Multiplicity)
多重性用于标注在关系线上,表示一个类的实例可以与多少个另一个类的实例相关联。
0..1:0 个或 1 个1:必须且仅有 1 个0..*或*:0 个或多个1..*:至少有 1 个

1.2 对象图 (Object Diagram)
1. 对象图的核心元素
在对象图中,每个矩形代表一个具体的实例,而非抽象的类。
A. 命名规范(Name and Class)
对象的名称通常带有下划线(在某些工具中),格式为:
对象名 : 类名(如myPhone : iPhone): 类名(匿名对象,当你只关心该类的一个实例时)
B. 属性槽(Attribute Slots)
不同于类图只定义属性类型,对象图必须显示属性的具体取值。
- 格式:
属性名 = 取值(如brand = "Apple")
C. 链接(Links)
类图中的“关联”在对象图中演变为“链接”。
- 链接代表了对象之间的物理或逻辑连接。
- 链接没有多重性(1..* 等),因为在特定时刻,链接的数量是确定的。
2. 对象图 vs. 类图:关键区别
| 特性 | 类图 (Class Diagram) | 对象图 (Object Diagram) |
|---|---|---|
| 抽象程度 | 抽象的系统逻辑 | 具体的运行状态 |
| 元素内容 | 属性类型、方法签名 | 属性的具体数值 |
| 生命周期 | 在整个系统生命周期内保持稳定 | 随程序运行动态变化(瞬时性) |
| 关联方式 | 定义了可能存在的关系(如 1对多) | 展示了实际存在的连接(1对1) |
3. 对象图的典型应用场景
- 解释复杂递归关系: 例如“组织架构”或“树状结构”,类图很难直观展示父子节点的嵌套,对象图可以清晰展示。
- 调试与验证: 当你发现系统逻辑在某种特定情况下出错时,画出该时刻的对象图有助于理清关系。
- 展示示例数据: 为非技术人员演示系统如何处理具体业务数据。
模拟一个“图书馆借阅”场景的快照

5. 高级细节:链接的类型
在对象图中,虽然通常只画直线,但有时需要标注更深层的含义:
- 组合链接 (Composition Link): 表示一个对象在物理上包含另一个对象。例如“一辆车对象”链接着“四个特定的轮胎对象”。
- 多重链接: 如果一个类图中定义了
1..*关系,在对象图中你可能需要画出 3 个相互独立的实例来展示这一多重性。
总结
复习对象图时,请记住:“它是具体的、有值的、瞬时的”。它是为了在某个特定时间点验证类图设计的正确性而存在的。
1.3 组件图 (Component Diagram)
1. 组件图的核心元素
1.1 组件 (Component)
- 定义: 系统中一个封装良好的、可替换的逻辑单元。
- 符号: 右上角带有两个小矩形图标的大矩形,或使用关键字
<<component>>。 - 实例: 一个
.jar包、一个.dll动态链接库、一个独立的微服务或一个数据库模式。
1.2 接口 (Interfaces)
这是组件图的精髓,分为两种类型:
- 供求接口 (Provided Interface): 组件提供给外部使用的功能。符号是 “棒棒糖” (Lollipop) —— 一个带圆圈的实线。
- 需求接口 (Required Interface): 组件运行所需的外部服务。符号是 “半圆杯” (Socket) —— 一个带半圆的实线。
1.3 端口 (Port)
- 定义: 组件与外部环境交互的显式窗口。通常在组件边缘画一个小正方形,接口挂载在端口上。
2. 组件之间的连接方式
- 委托 (Delegation): 将发送到组件外部接口的消息转发到组件内部的特定类。
- 装配连接器 (Assembly Connector): 将一个组件的“供求接口”与另一个组件的“需求接口”无缝对接(即棒棒糖正好插进插座里)。
3. 组件图的三个维度
| 视角 | 描述 | 常见对象 |
|---|---|---|
| 源代码视图 | 编译时的依赖关系 | 源文件、头文件、类库 |
| 可执行视图 | 运行时的物理分块 | .exe、.war、.docker_image |
| 部署视图 | 组件在硬件上的物理分布 | 数据库服务器组件、Web服务组件 |

1.4 部署图 (Deployment Diagram)
1. 部署图的核心元素
1.1 节点 (Node)
节点代表一个物理资源或计算资源。在 UML 中通常用 3D 立方体 表示。
- 设备节点 (Device): 具有处理能力的硬件,如服务器、PC、智能手机、传感器。
- 执行环境 (Execution Environment): 运行在硬件之上的软件容器,如
JVM、Docker Container、Tomcat Server、操作系统。
1.2 伪影/制品 (Artifact)
- 定义: 物理世界中的文件。它是组件的具体物理展现。
- 示例:
user-service.jar、config.yaml、app.exe。 - 部署: 符号上,制品通常放置在节点内部,表示该节点“承载”了该软件。
1.3 路径 (Path/Communication Path)
- 定义: 节点之间的通信连接。
- 属性: 线上通常会标注通信协议,如
TCP/IP、HTTP、JDBC、gRPC。
2. 部署图的两种形式
- 描述型 (Descriptor Level): 概括性的架构,如“Web 服务器”与“数据库服务器”的连接。
- 实例型 (Instance Level): 具体的部署情况,标注出具体的 IP 地址或服务器名称,如“生产环境 01 号节点”。
3. 部署图的关键关系
- 部署 (Deploy): 一个制品“投射”到一个节点上的过程,常用带
<<deploy>>字样的虚线箭头表示。 - 嵌套 (Nested Nodes): 一个节点可以包含另一个节点(例如:物理服务器包含虚拟机,虚拟机包含 Docker 容器)。

2. 动态行为图 (Behavioral Diagrams)
行为图描述系统的逻辑流转,即“系统如何运行”。
2.1 用例图 (Use Case Diagram)
1. 核心构成要素深度解析
1.1 参与者 (Actor)
- 不仅仅是人: 参与者可以是人、外部系统(如支付网关)、硬件设备(如传感器)或时间(定时任务)。
- 角色非职位: 一个人可以充当多个参与者(如既是“店员”又是“管理员”)。
- 符号: “小人”图标。
1.2 用例 (Use Case)
- 特征: 必须是动词+名词(如“下单”、“查询余额”)。
- 价值导向: 一个用例必须为参与者产生可观测的价值(例如“输入密码”通常不是独立用例,它是“登录”的一部分)。
- 符号: 椭圆形。
1.3 系统边界 (System Boundary)
- 作用: 明确哪些功能在系统内,哪些在系统外。
- 符号: 包围用例的矩形框。
2. 关键关系(复习重点/难点)
在用例图中,用例之间不仅仅是独立的,它们存在三种核心关系:
| 关系类型 | 关键字 | 说明 | 符号 |
|---|---|---|---|
| 包含 (Include) | <<include>> |
必须发生的步骤。基用例包含子用例的功能。 | 虚线箭头 + <<include>> |
| 扩展 (Extend) | <<extend>> |
可选发生的步骤。在特定条件下才执行(如:报错、折扣)。 | 虚线箭头 + <<extend>> |
| 泛化 (Generalization) | 无 | 类似于继承。子用例是父用例的一种特例。 | 实线 + 空心三角形 |

2.2 状态机图 (State Machine Diagram)
1. 核心组成要素
1.1 状态 (State)
- 初态 (Initial State): 系统的起点,用实心圆点表示。
- 终态 (Final State): 流程的终点,用圆圈内含实心圆点表示。
- 简单状态 (Simple State): 对象的一个稳定阶段。
- 组合状态 (Composite State): 内部还包含嵌套子状态的状态。
1.2 转移 (Transition)
描述对象从一个状态移动到另一个状态的路径。通常包含以下三部分:
- 事件 (Trigger): 触发状态改变的信号(如
click)。 - 监护条件 (Guard): 一个布尔表达式,只有为真时才触发转移(格式:
[condition])。 - 动作 (Effect): 转移发生时执行的代码或行为(格式:
/action)。
完整格式: 事件 [监护条件] / 动作
2. 状态内的内部行为 (Internal Behaviors)
在一个状态矩形框内部,可以定义该状态在不同阶段的行为:
- Entry: 进入该状态时立即执行。
- Exit: 退出该状态前执行。
- Do: 处于该状态期间持续执行的任务。
3. 高级概念:伪状态 (Pseudo-states)
- 选择 (Choice/Junction): 用菱形表示,根据不同的条件流向不同的目标状态。
- 历史状态 (History State): 记住离开组合状态前的最后一个子状态。下次返回时,直接进入该子状态(用圆圈里的
H表示)。

2.3 活动图 (Activity Diagram)
1. 核心构成要素
1.1 动作与节点
- 动作 (Action): 流程中的最小单元(如“发送确认邮件”)。用圆角矩形表示。
- 开始/结束节点: 实心圆点表示开始,牛眼圆(圆圈内含实心圆)表示结束。
- 决策点 (Decision): 菱形。根据条件(Guard)选择不同路径。
1.2 分叉与汇合 (Fork & Join) —— 活动图的灵魂
这是活动图区别于普通流程图的关键:
- 分叉 (Fork): 一条流分为多条并发执行的流(用粗实线/黑棒表示)。
- 汇合 (Join): 等待所有并发流完成后,再合为一条流继续执行。
1.3 泳道 (Swimlanes)
- 作用: 将活动分配给不同的角色或部门(如:客户、财务部、仓库)。
- 形式: 纵向或横向的矩形分区。
2. 对象流 (Object Flow)
活动图不仅可以描述控制流(动作的先后),还可以描述数据(对象)的传递。
- 符号: 在动作之间画一个矩形代表对象,或者在箭头旁标注对象状态的变化,例如:
订单 [已支付]。

2.4 时序图 (Sequence Diagram)
1. 核心构成要素
1.1 生命周期线 (Lifeline)
- 符号: 顶部是一个矩形(对象框),下方连接着一条垂直虚线。
- 表示: 代表系统中的一个对象实例或角色。
- 激活条 (Activation Bar): 虚线上的窄矩形,表示该对象当前正处于执行状态或正在处理消息。
1.2 消息 (Messages)
消息决定了对象间的协作逻辑:
- 同步消息 (Synchronous): 实心箭头 + 实线。发送者发出消息后需等待返回(阻塞)。
- 异步消息 (Asynchronous): 开放箭头 + 实线。发送者发出消息后继续操作(非阻塞)。
- 返回消息 (Return): 开放箭头 + 虚线。表示先前同步消息的结果返回。
- 自关联消息: 对象调用自身的方法。
2. 逻辑控制:组合片段 (Combined Fragments)
在复杂的业务中,时序图需要表达“如果”、“循环”等逻辑。UML 使用操作符框来表示:
| 操作符 | 含义 | 类比代码 |
|---|---|---|
| alt | 多选一分支(Alternative) | if...else / switch |
| opt | 可选分支(Option) | if (没有 else) |
| loop | 循环(Loop) | for / while |
| par | 并行(Parallel) | 多线程同时执行 |
| ref | 引用(Reference) | 调用另一个已画好的时序图(子过程) |

2.5 通信图 (Communication Diagram)
1. 核心构成要素
1.1 对象与链接 (Objects and Links)
- 对象 (Object): 与类图相似,表示参与交互的具体实例。
- 链接 (Link): 连接对象的实线,表示对象之间存在路径可以发送消息。它是类图中“关联”关系的实例。
1.2 消息 (Messages)
在通信图中,消息标注在链接线旁边,并带有一个方向箭头。
1.3 序列编号 (Sequence Numbers)——最关键点
由于通信图没有时间轴,消息的先后顺序完全靠编号来识别:
- 简单序列:
1,2,3... 表示执行顺序。 - 嵌套序列:
1.1,1.2,1.2.1... 表示在执行步骤 1 的过程中产生的子调用。
2. 通信图 vs. 时序图:同源异形
两者统称为交互图 (Interaction Diagrams),信息量基本等价,但侧重点不同:
| 特性 | 时序图 (Sequence) | 通信图 (Communication) |
|---|---|---|
| 主轴 | 时间 (Time) | 关系 (Relationship) |
| 空间效率 | 随时间增长,垂直方向占用空间大 | 布局紧凑,适合展示复杂的链接网络 |
| 逻辑焦点 | 消息传递的先后顺序 | 对象的职责分布和结构布局 |
| 修改成本 | 插入新步骤需要上下移动所有元素 | 只需要在连线上改编号 |

3. 复习速查表
| 图类型 | 关键词 | 适用阶段 |
|---|---|---|
| 类图 | 结构、关系 | 详细设计/编码 |
| 用例图 | 角色、功能边界 | 需求分析 |
| 时序图 | 时间、消息流 | 逻辑实现 |
| 状态图 | 生命周期、转换 | 状态机逻辑 |
| 活动图 | 流程、并发 | 业务逻辑/算法 |
浙公网安备 33010602011771号