第一类:表达功能的用例图;
第二类:表达应用程序静态结构的类图、对象图、组合结构图和包图;
第三类:表达应用程序动态结构的时序图、通信图、活动图、状态图和交互纵览图;
第四类:表达应用程序实现的组件图和部署图。
下面是对不同类型 UML 图的优化描述,并附上每种图的示例图形概念。
1. 用例图 (Use Case Diagram)
功能: 表达软件系统的功能模型,揭示用户(或角色)与系统之间的交互。
- 示例:
+-----+
| 用户 |
+-----+
|
|
+-------------+
| 系统 |
+-------------+
| 用例1 |
| 用例2 |
+-------------+
2. 类图 (Class Diagram)
功能: 表达软件系统的架构,包括类、接口及它们之间的关系。
- 示例:
+------------------+
| 类A |
+------------------+
| - 属性1 |
| - 属性2 |
+------------------+
| + 方法1() |
| + 方法2() |
+------------------+
|
| 继承
|
+------------------+
| 类B |
+------------------+
3. 对象图 (Object Diagram)
功能: 类图的实例快照,描述某一时刻对象之间的关系。
- 示例:
+------------------+
| 对象A: 类A |
| 属性1 = 值1 |
| 属性2 = 值2 |
+------------------+
|
|
+------------------+
| 对象B: 类B |
| 属性1 = 值3 |
+------------------+
4. 组合结构图 (Composite Structure Diagram)
功能: 表达类中类的复杂结构。
- 示例:
+------------------+
| 类C |
+------------------+
| - 属性 |
+------------------+
| + 方法() |
|------------------|
| +----+ |
| | 组件D | |
| +----+ |
+------------------+
5. 包图 (Package Diagram)
功能: 模型元素的集合,用于模块化复杂系统。
- 示例:
+-------------+
| 包1 |
| +--------+ |
| | 类1 | |
| | 类2 | |
| +--------+ |
+-------------+
|
+-------------+
| 包2 |
| +--------+ |
| | 类A | |
| +--------+ |
+-------------+
6. 时序图 (Sequence Diagram)
功能: 表达行为的时间顺序,关注消息的时序交互。
- 示例:
用户 系统
| |
|----->| 用例1
| |
|<-----| 反馈
|----->| 用例2
7. 通信图 (Communication Diagram)
功能: 表达对象间的相互服务顺序,使用序号表示。
- 示例:
[1] 用户 -> 系统 : 用例1
[2] 系统 -> 用户 : 反馈
[3] 用户 -> 系统 : 用例2
8. 活动图 (Activity Diagram)
功能: 描述用例或对象活动的操作及结果,强调工作流。
- 示例:
开始 -> 用例1 -> 决策 -> [是] -> 用例2 -> 结束
|
v
结束
9. 状态图 (State Diagram)
功能: 描述特定事件下对象的状态变化。
- 示例:
+---------+
| 状态1 |
+---------+
|
| 事件1
v
+---------+
| 状态2 |
+---------+
10. 交互纵览图 (Interaction Overview Diagram)
功能: 综合多种活动的消息序列。
- 示例: 提示的图示将包含时序图和通信图的简单框架图。
11. 组件图 (Component Diagram)
功能: 表达组件间的关系,包括源代码、二进制和可执行组件。
- 示例:
+--------------+
| 组件A |
+--------------+
| + 方法() |
+--------------+
|
+--------------+
| 组件B |
+--------------+
| + 方法() |
+--------------+
12. 部署图 (Deployment Diagram)
功能: 表达软件与硬件的物理关系。
- 示例:
+-------------+
| 服务器 |
| +--------+ |
| | 软件1 | |
| +--------+ |
+-------------+
|
+-------------+
| 客户端 |
| +--------+ |
| | 软件2 | |
| +--------+ |
+-------------+
PS: 通信图与时序图的异同
- 相同点: 两者都表达对象之间的交互关系。
- 不同点:
- 通信图通过序号表示服务的顺序。
- 时序图通过时间轴表示消息的先后关系。