Search

Search IconIcon to open search

UML 图

Last updated Jun 16, 2023

# UML

# 每个图用在什么流程

Stage Structure Behavior
Requirement Use-case Activity
Analyse Sequence
Design Class State, Communication
Implementation

# Class Diagram

一个简单说明 02-Tutorial-annotated.pdf

PlantUML

 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
@startuml
skinparam classAttributeIconSize 0
class Gast {
    -einladenderMitarbeiter
    +Gast(einladender:Mitarbeiter):Gast
    +getEinladenderMitarbeiter():Mitarbeier
}
Gast --|> Person
Gast "*" ---> "1" Mitarbeiter : lädt ein

class Gebaeude {
    -raeume:Set<Raum>
    addRaum(raum):void
}
Gebaeude *-- "*" Raum

class Geraet {
    -name:String
    +Geraet(name:String):Geraet
    +getName():String
}
class Mitarbeiter {
    -mitarbeiterNummer:String
    +anzahlMitarbeiter:Integer = 0
    +Mitarbeiter():Mitarbeiter
    +raumBuchung(raum:Raum):RaumBuchung
    +getMitNo():String
}
Mitarbeiter --|> Person


abstract class Person {
    -vorname:String
    -nachname:String
    -geburtsdatum:String
    +Person(vorname:String, nachname:String, geburtsdatum:String):Person
    +getVorname(): String
    +getNachname(): String
    +getGeburtsdatum(): String
}

class Raum {
    -ausstattung:Set<Geraet>
    -gebaeude:Gebaeude
    Raum():Raum
    getGebaeude():Gebaeude
    +addGeraet(geraet:Geraet):void
}
Raum o-- "0..3" Geraet

class RaumBuchung {
    -mitarbeiter:Mitarbeiter
    -raum:Raum
    -buchungsZeitraum:String
    +Raumbuchung(mitarbeiter, raum, buchungsZeitraum)
}

Mitarbeiter "*" -- "*" Raum
(Mitarbeiter, Raum) .. RaumBuchung

@enduml

#

# 属性/方法

    • public
    • private
  • # protected
  • (_) default

# Association

association 会指示

  • 关联类型
  • 角色
  • 多边关系

  • aggregation: 成员没有聚合体还是成员(树没有森林还是树)
  • composition: 部分没有整体就不是部分(玩家没有游戏就不是玩家)

# 对象图

某个类的具体对象在 UML 中的表示

# State Diagram

src: Software Entwuf mit UML2 7

PlantUML

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
@startuml
state choice1 <<choice>>
[*] --> aus
aus --> PasswortAngeben
PasswortAngeben --> choice1
choice1 --> rot: falsch
rot --> aus :30s
choice1 --> TürOffen :richtig
state TürOffen {
    state choice2 <<choice>>
    [*] --> sensorActive
    sensorActive --> choice2
    choice2 --> [*] : niemand
    choice2 --> sensorActive : jemand, 10s
}
TürOffen --> aus :after 120s
aus --> [*]
@enduml

# 基础路线

# 分支

静态分支: 条件在执行前检查过了

动态分支:

  • 如果还要判断
  • 用空心圆或者菱形
  • Möglichkeit Bedingungsteile

# 原子状态和持续状态(Activity)

  • atomar
  • andauernd(enter, do, exit)

# Protokollzustandsautomaten

状态协议机表示了在某一个协议下, 什么操作会发生什么变化

# Hierarchy

  • 一个状态可以有任意多个的子状态

# Nebenläufige Zustände

  • 并发状态
  • 两个实体(两个图) 可能在某一过程执行时同时改变状态

# History-State

  • 历史状态存储了在离开上一层状态前所处的最后一个子状态
  • 某个状态被打断的时候, 重新进入应该在哪个点开始

# Activity Diagram

src: Software-Entwurf mit UML2 K3

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
@startuml
(*) --> "Vorlesung" 
if "Prüfung erfordlich" then 
--> [ja] B1
    --> "anmelden" 
    --> B2
    
    B1 --> "Termen erfragen" 
    --> B2
    
    B1 --> "vorbereiten" 
    --> B2
    
    --> [gesund] Klasur
    --> (*)
else 
--> [nein] (*)
@enduml

# 活动节点

普通节点 用来表示一个活动

起始节点/终止节点

  • 起始节点也可以是实心圆(不是终止那种外面有一圈的)

# 分支

条件分支

分叉与汇合

# 一个建模算法的例子

  • □ 表示某一属性

# Sequence Diagram

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@startuml
actor Actor as act
participant Browser as br
participant SWTTV as tv
participant SWTPay as pay
participant CreditCard as cc
database Database as db
act -> br
br -> tv: selectVideo
tv -> db: isVidoeAvailable
tv <-- db: yes
br <-- tv: payForVideo
br -> tv: paymentForm
tv -> pay: initPayment
pay -> cc: authentorize
cc -> cc: tryAgain
pay <-- cc: yes
tv <-- pay: paymentSuccess
br <-- tv: paymentOk
tv -> db: getVideo
tv <-- db: accept
act <-- br: video
@enduml

# 消息的类型

  • 实心箭头(如上)是过程调用
  • 单边箭头 $\rightharpoonup$ 是异步消息

# 分支, 循环

  • 这应该是一个大富翁
  • 虚线表示没有时序关系

# 交互范围

# 时间轴/生命线

  • 时间轴是从上往下的
  • 只关心顺序和同步

# Interaction Diagram

  • 交互图

# Communication Diagram

# 图例

  • character
  • sequence number(可以是变量, 表达式)
  • direction
  • operation

# Use-case Diagram

  • 用例, 即是外部可见的系统功能
  • 主要由 actor, use-case 组成

# 关联

  • 泛化: 指通常理解为继承的关系, 子指向父, 如 vip -> guest
  • 包含: 分解的关系
  • 扩展:
  • 依赖 dependency: VS2010中拓展的一种关系, 指向被依赖项

# 示例