UML 详解
本篇整理 UML 中各类图的作用、组成与符号,顺序为: UML 概念→ 用例图 → 类图与对象图 → 交互图 → 行为图 → 包图 → 实现图 → UML图分类总结。
文章目录
- UML 详解
-
- 一、UML 概念
-
- 1. UML 是什么
- 2. 三大组成部分
- 3. 四种事务
- 4. 四种连线关系
- 5. UML 的特点
- 6. UML 图的分类
- 二、用例图
-
- 1. 定义与组成
- 2. 用例之间的关系
- 3. 用例图符号对照表
- 三、类图与对象图
-
- 1. 类图
- 2. 类之间的关系
- 3. 六种关系的线型符号
- 4. 关联数目表示
- 5. 抽象类与具体类
- 6. 对象图
- 四、交互图:顺序图与通信图
-
- 1. 概述
- 2. 顺序图的核心元素
- 3. 消息类型
- 4. 通信图
- 5. 顺序图与通信图的区别
- 五、行为图:状态图与活动图
-
- 1. 状态图
- 2. 活动图
- 六、包图
-
- 1. 定义
- 2. 包的表示与依赖
- 七、实现图:构件图与部署图
-
- 1. 构件图
- 2. 部署图
- 八、UML 图分类总结
软工导论相关文章可看(持续创作ing): 软工导论(一):基础概念与开发模型 软工导论(二):需求工程 软工导论(三):UML图 软工导论(四):体系结构与设计模式 软工导论(五):软件测试
一、UML 概念
1. UML 是什么
UML(统一建模语言)是一种标准建模语言,不是编程语言,也不是一套图形符号的简单集合:
- 独立于软件开发过程,可用于软件开发的各个阶段;
- 是一种语言,语言的使用者可以对其进行扩展;
- 不局限于系统的分析与设计阶段,全生命周期都能使用。
2. 三大组成部分
UML 体系由三部分组成:基本构造块、规则、公共机制。

3. 四种事务
UML 中的事务分为四类:

4. 四种连线关系
| 关联 | 实线 |
| 依赖 | 虚线 + 实心箭头 |
| 泛化(继承) | 实线 + 空心三角箭头 |
| 实现 | 虚线 + 空心三角箭头 |

5. UML 的特点
- UML 的模型图分为静态模型图(用例图、类图等)和动态模型图(活动图、顺序图、状态图、协作图等);
- 支持从需求到实现的完整建模过程。

6. UML 图的分类
UML 图按用途分为五大类:

二、用例图
1. 定义与组成
用例图从用户角度描述系统的功能,由四类元素组成:
- 系统边界:矩形框,系统名称位于顶部(可有可无)。
- 参与者(Actor):与系统交互的外部用户,用火柴人表示。
- 用例(Use Case):系统提供的一项功能,用椭圆形表示。
- 注释(Note):对元素的补充说明,用便签表示。
2. 用例之间的关系
用例之间只有三种关系:包含、扩展、泛化(关联不是用例之间的关系)。
| 包含 include | 带箭头虚线,箭头指向被包含用例 | 基用例必须调用被包含用例 |
| 扩展 extend | 带箭头虚线,箭头指向基础用例 | 扩展用例是可选的附加行为 |
| 泛化 | 带空心箭头实线,箭头指向父用例 | 子用例继承父用例(少见但合法) |
参与者与用例之间用实线关联;参与者与参与者之间用泛化(继承)表示,如"管理员、普通用户都继承用户"。

3. 用例图符号对照表

三、类图与对象图
1. 类图
类图描述系统中类的静态结构,包括类的属性、操作以及类之间的关系,是使用最广泛的 UML 图。
2. 类之间的关系
类关系分两大类:
- 实现关系:接口与类之间。
- 对象与对象之间:
- 泛化关系(is-a):继承,空心三角实线;
- 关联关系:又细分为聚合(has-a,空心菱形)、组合(contains-a,实心菱形)、依赖(use-a,虚线箭头)。

3. 六种关系的线型符号
关联关系:
依赖关系:

泛化关系(空心三角实线):
实现关系(空心三角虚线):
聚合关系(空心菱形):
组合关系(实心菱形): 
4. 关联数目表示
关联关系的数目用 0…1、0…*、1…1、1…*、* 等表示:

5. 抽象类与具体类
- 抽象类:继承父类的抽象操作但未提供实现;没有任何直接实例;UML 中用斜体类名表示。
- 具体类:可以直接实例化的类。注意:有父类并不代表该类就是具体类。

6. 对象图
对象图描述系统中的多个对象在某一时刻的状态,是类图的实例化快照。对象的表示:矩形框中写对象名(或类名),名字下加下划线。

四、交互图:顺序图与通信图
1. 概述
交互图描述一组对象之间消息的传递顺序,主要用于用例图中控制流的建模。


2. 顺序图的核心元素
- 参与者:与系统交互的外部用户。
- 对象:顺序图横轴上与序列有关的对象,矩形框中写对象名或类名,名字下有下划线。
- 生命线:纵轴方向的虚线,表示对象在序列中的执行情况(发送和接收消息、对象活动)。
- 消息符号:从一个对象生命线到另一个对象生命线的箭头,按时间顺序从上到下排列。

3. 消息类型
| 同步消息 | 实心箭头 | 发送后等待接收方处理完毕 |
| 异步消息 | 开放箭头 | 发送后不等待,继续执行 |
| 简单消息 | 普通箭头 | 不区分同步异步 |
| 自调用 | 指向自身的箭头 | 对象调用自己的操作 |
| 创建/销毁 | new() / delete() | 创建对象、结束对象生命线 |


4. 通信图
通信图(协作图)同样描述对象间的交互,但侧重对象之间的协作关系,而不像顺序图那样强调消息的时间顺序。

5. 顺序图与通信图的区别
- 顺序图:强调消息传递的时间顺序。
- 通信图:强调对象之间的协作关系(消息编号体现顺序)。
五、行为图:状态图与活动图
1. 状态图
状态图描述一个对象从状态到状态的控制流,用于对系统的动态特性建模。
- 状态的组成部分包括:名称、转移。
- 历史状态:用带 H 的小圆圈表示,记录离开前的状态,用于返回时恢复。

- 状态图可以有结束状态,也可以没有(状态循环)。


2. 活动图
活动图描述业务实现用例的工作流程,常用于业务流程建模。
- 分叉 / 汇合:用粗横线表示并发分支的拆分与合并。

- 泳道:按参与者划分活动区域,标明每个活动由谁负责。

- 对象流:动作 / 活动状态与对象之间的依赖关系,表示动作使用对象或动作对对象的影响。 对象流中的对象表示对象在过程中的一种状态,如"订单[未付款] → 支付 → 订单[已付款]"。


六、包图
1. 定义
包图描述系统的体系层次结构,把模型元素按逻辑分组组织。系统需求分析阶段产生的包图描述了系统的体系层次结构。

2. 包的表示与依赖
- 包用文件夹形状表示。
- 包之间的依赖关系用虚线箭头表示,常见的是 <<use>> 依赖。


七、实现图:构件图与部署图
1. 构件图
构件图(Component Diagram)描述系统的静态实现视图,支持系统构件的配置管理,通常从四方面建模:


2. 部署图
部署图定义系统中软硬件的物理体系结构,描述节点(硬件设备)及节点上部署的构件。
- 节点:立方体图形,表示硬件设备或运行环境;
- 节点之间用连接线表示通信(如 TCP/IP)。

八、UML 图分类总结

UML 图按结构/行为可分为两大类:
结构行为图(描述系统静态结构):
- 类图:描述系统中类的静态结构
- 对象图:系统中多个对象在某一时刻的状态
- 组件图:描述系统的静态实现视图
- 部署图:定义系统中软硬件的物理体系结构
- 用例图:从用户角度描述系统功能
动态行为图(描述系统动态行为):
- 序列图:对象之间的动态合作关系,强调消息发送的顺序
- 协作图:描述对象之间的协作关系
- 状态图:描述状态到状态的控制流
- 活动图:描述业务实现用例的工作流程






