UML(统一建模语言)
文章目录
- 一、UML 是什么?
- 二、为什么要用UML?
- 三、UML图的分类(14种图)
- 四、常用 UML 图详解(含 Mermaid 实例)
- 1. 用例图
- 2. 类图
- 3. 时序图
- 4. 活动图
- 5. 状态机图
- 总结
一、UML 是什么?
UML(Unified Modeling Language,统一建模语言)是一种标准化的建模语言,用于为软件系统进行可视化说明、构建和文档化。它就像是软件界的蓝图,让不同角色的人(产品、开发、测试)都能基于统一的图形语言进行高效沟通。
二、为什么要用UML?
1、促进沟通,减少歧义: 图形比文字更能清晰、无歧义地表达复杂的设计思路。
2、可视化系统结构: 帮助开发人员从宏观和微观两个层面理解系统,看清系统的组成部分以及它们之间的关系。
3、用于分析和设计: 在编码之前进行建模,可以提前发现设计缺陷,降低后期修改的成本(修复设计阶段的错误比修复代码阶段的错误要便宜得多)。
4、生成代码框架: 很多现代IDE(集成开发环境)可以根据UML图(尤其是类图)自动生成代码骨架,极大提高开发效率。
5、项目文档的核心部分: UML图本身就是最好的技术文档,它清晰地记录了系统的架构和设计决策。
三、UML图的分类(14种图)
UML 2.x 中定义了14种图形,根据其描述的侧重点不同,可以分为两大类和几个子类:
1、结构图:描述系统的静态结构(类、组件、部署等)。
2、行为图:描述系统的动态行为(交互、状态变化、活动流程等)。
下面是这14种图的分类概览,重点介绍其中最常用的几种:
(下图展示了UML图的分类体系)
quadrantCharttitle UML图分类图谱x-axis "静态结构" --> "动态行为"y-axis "系统状态" --> "交互逻辑""类图": [0.15, 0.8]"组件图": [0.1, 0.6]"部署图": [0.1, 0.4]"对象图": [0.15, 0.2]"复合结构图": [0.2, 0.5]"包图": [0.25, 0.7]"轮廓图": [0.3, 0.9]"用例图": [0.7, 0.9]"活动图": [0.9, 0.7]"状态机图": [0.9, 0.3]"时序图": [0.7, 0.1]"通信图": [0.6, 0.15]"交互概览图": [0.5, 0.25]"定时图": [0.8, 0.45]
四、常用 UML 图详解(含 Mermaid 实例)
下面我们挑选几种最常用、最重要的UML图进行详细说明。
1. 用例图
描述用户与系统之间的交互,是从用户角度看到的系统功能集合。
核心元素:
- 小人代表参与者(Actor),是系统外部的角色。
- 椭圆代表用例(Use Case),是系统提供的功能。
- 箭头表示关联关系。
- 虚线箭头
<<include>>
表示包含关系,指“下单”用例必然包含“支付”用例。
2. 类图
描述系统的静态结构,展示系统中的类、类的属性、方法以及类之间的关系。(如关联、依赖、泛化/继承、实现)。它是面向对象设计的核心,直接对应代码结构。
核心元素:
Employee
是父类,SalariedEmployee
和HourlyEmployee
继承自它(泛化/继承关系,空心三角箭头)。Car
和Engine
是组合关系(实心菱形箭头),表示Car
拥有Engine
,且生命周期一致(车没了,引擎也没了)。+
表示public
,-
表示private
。
3. 时序图
描述对象之间传递消息的时间顺序,强调交互过程中的先后次序。
- 核心元素:
- 垂直生命线表示对象随时间的存在。
- 激活条(长条矩形)表示方法执行的时间段。
- 带箭头实线表示同步消息(比如函数调用)。
- 虚线表示返回消息。
4. 活动图
描述业务流程或算法的步骤流程,类似于流程图,支持并行行为。
- 核心元素:
- 圆角矩形表示**活动v(Action)。
- 菱形表示判断(Decision)。
- 圆环表示开始和**结束v。
- 分叉/汇合节点: 粗黑线,表示并发。
5. 状态机图
描述一个对象在其生命周期内所经历的各种状态,以及引起状态转移的事件。(如信号、操作条件变化)。对于具有复杂状态变化的对象(如订单、电梯、游戏角色)非常有用。
- 核心元素:
- 圆角矩形表示对象的状态。
- 箭头表示转移(Transition),箭头上的文字是触发转移的事件。
- [*] 表示初始状态和终止状态。
- 还可以包含子状态(如Cancelled状态下的两种不同类型)。
总结
图类型 | 核心用途 | 开发阶段 |
---|---|---|
用例图 | 需求分析,界定系统范围 | 需求分析 |
类图 | 系统详细设计,定义核心类 | 系统设计 |
时序图 | 细化功能实现逻辑,明确对象交互 | 详细设计、编码 |
活动图 | 梳理复杂业务工作流 | 需求分析、系统设计 |
状态机图 | 管理有复杂状态变化的对象 | 系统设计 |
UML是一个强大的工具,但不必在项目中用完所有14种图。正确的做法是根据项目的实际需求,选择最合适的几种图来表达设计思想。通常,用例图(需求)、类图(设计)、时序图(逻辑) 三者组合,就能解决大部分问题。