• UML(统一建模语言)

The Unified Modeling Language (opens new window)

UML Tutorial (opens new window)

什么是统一建模语言(UML)? (opens new window)

PlantUML (opens new window)

Mermaid (opens new window)

# 常用的 UML 图

# 用例图 Use Case Diagram (opens new window)

  • 用于描述系统提供的系列功能,每个用例代表系统的一个功能模块
  • 包含用例、角色两种图元

用例图

# 类图 Class Diagram (opens new window)

  • 表示系统中应该包含哪些实体,各实体之间如何关联

  • 类在类图上使用包含三个部分的矩形来描述:最上面的部分显示类的名称,中间部分包含类的属性,最下面的部分包含类的方法

  • 类之间的基本关系

    1. 关联(包括聚合、组合)
      • 表现形式:类里的某个属性引用了另外一个实体
      • 聚合:当某个实体聚合成另一个实体时,该实体还可以同时是另一个实体的部分
      • 组合:当某个实体组合成另一个实体时,该实体则不能同时是一个实体的部分
      • 关联使用一条实线来表示,带箭头的实线表示单向关联
    2. 泛化
      • 泛化与继承是同一个概念,都是指子类是一种特殊的父类
      • 类与类之间的继承关系使用带空心三角形的实线表示
      • 类实现接口可视为一种特殊的继承,这种实现用带空心三角形的虚线表示
    3. 依赖
      • 如果一个类的改动会导致另一个类的改动,则称两个类之间存在依赖
      • 表现形式:形参、局部变量、静态变量
      • 依赖关系使用带箭头的虚线表示,其中箭头指向被依赖的实体

    实线-继承(is a)、虚线-实现,空心三角形方向都是从子类/实现类指向父类/接口
    实线-关联、虚线-依赖
    空心菱形-聚合(has a)、实心菱形-组合(contains a)

    聚合和组合的区别

    聚合和组合是都是特殊的关联关系,二者都是整体和部分的关系,主要区别有 2 点:
    一是整体和部分的这种关联关系,组合更强一些,聚合要弱一些;
    二是生命周期,对于组合,部分的生命周期不能超越整体,也就说部分不能脱离整体而存在,部分随着整体的创建而被创建,消亡而被消亡。对于聚合,部分的生命周期可以超越整体,整体消亡了,部分还可以继续独立存在。

类之间的基本关系

类图

UML类图图示样例

# 顺序图/时序图 Sequence Diagram (opens new window)

  • 由活动者、对象、消息、生命线和控制焦点组成

用户登录顺序图

sequence-example-facebook-authentication

@startuml
skinparam ParticipantBackgroundColor #DeepSkyBlue

actor 用户 as c  #DeepSkyBlue
participant "客户端" as client
participant "服务网关" as ga
participant "用户服务" as user
database "数据库" as DB  #DeepSkyBlue
participant "Google服务" as google  #LightCoral

activate c #DeepSkyBlue
activate client #DeepSkyBlue

c->client:用户登录

group#LightCoral #LightCoral Google登录客户端流程
  client -> google : 请求Google OAuth登录
            activate google #DeepSkyBlue
            google-->client:登录url
            client->google:跳转登录页
            google -> google : 用户登录
            google --> client : Google登录Token
            deactivate google
end

|||

client -> ga : 登录请求
note right#LightCoral:新增登录方式,三方登录请求实体
activate ga #DeepSkyBlue
ga ->user:请求转发
activate user #DeepSkyBlue


alt#DeepSkyBlue 常规登录
    user -> DB : 查询用户信息
    activate DB #DeepSkyBlue
    DB -> user : 用户信息
    deactivate DB
    user->user:登录密码校验

|||
else Google登录
    group#LightCoral #LightCoral Google登录服务端流程
          user->google:验证token
          activate google #DeepSkyBlue
          google-->user:用户信息
          deactivate google
          user->user:存储或更新用户信息
    end group
end


user-->ga:登录结果
deactivate user
ga -> client : 响应
deactivate ga
alt#DeepSkyBlue 成功
        client -> c : 登录成功
else 失败
        client -> c : 登录失败
end
deactivate client
|||
@enduml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

# 活动图 Activity Diagram (opens new window)

  • 用于描述用例内部的活动或方法的流程(如果除去活动图中的并行活动描述,就变成流程图)
  • 开始状态、结束状态、活动、活动流、分支、分叉和汇合、泳道

活动图

# 状态机图 State Machine Diagram (opens new window)

  • 表示某个对象所处的不同状态和该类的状态转换信息
  • 初始状态、状态之间的转换、状态、判断点、一个或者多个终止点

状态机图

# 组件图 Component Diagram (opens new window)

  • 包含组件、接口和 Port 等图元

组件图

# 部署图 Deployment Diagram (opens new window)

部署图

Updated at: 2025-06-24 22:34:45