快速绘制
大多UML图可以在官网上找到Demo,这里以常用的为例
类图
关系 | 符号 | 说明 |
---|---|---|
泛化(Generalization) | <-- | 是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为 |
实现(Realization) | <.. | 是一种类与接口的关系,表示类是接口所有特征和行为的实现 |
关联(Association) | -- | 是一种拥有的关系,它使一个类知道另一个类的属性和方法 |
聚合(Aggregation) | o-- | 是整体与部分的关系,且部分可以离开整体而单独存在 |
组合(Composition) | *-- | 是整体与部分的关系,但部分不能离开整体而单独存在 |
依赖(Dependency) | <.. | 是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖 |
一辆车的基本关系如下:
plantuml
@startuml
class Runnable {
+run()
}
class Car {
+run()
}
class BmwCar {
-name
+run()
}
class Engine {
-VIN
+start()
}
class Wheel {
-brand
+turn()
}
class Person {
-name
-idCardNo
+drive()
}
class Oil {
-no
}
Runnable <|.. Car
Car <|-- BmwCar
BmwCar "1" o-- "4" Wheel
BmwCar "1" *-- "1" Engine
Oil <.. BmwCar
Person -- BmwCar
@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
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
时序图
去ATM取钱的时序图
plantuml
@startuml
participant User
participant Atm
participant Bank
User -> Atm : [金额大于Atm限制金额]取款
activate Atm
User <-- Atm
deactivate Atm
User -> Atm : [密码错误]取款
activate Atm
Atm -> Bank : 交易请求
activate Bank
Atm <-- Bank : 应答请求
deactivate Bank
User <-- Atm : 密码错误
deactivate Atm
User -> Atm : [余额不足]取款
activate Atm
Atm -> Bank : 交易请求
activate Bank
Atm <-- Bank : 应答请求
deactivate Bank
User <-- Atm : 余额不足
deactivate Atm
User -> Atm : [密码正确、余额足够]取款
activate Atm
Atm -> Bank : 交易请求
activate Bank
Atm <-- Bank : 应答请求
deactivate Bank
User <-- Atm : 吐出现金
deactivate Atm
@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
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
活动图
以Java线程状态为例
plantuml
@startuml
(*)
note left: Start
-> [start()]Runnable
-> [Cpu scheduler]Running
-> [run() completes](*)
Running -> [Cpu scheduler]Runnable
Running -left-> [blocking event]Blocked
-->Runnable
Running --> [synchronized]Blocked in object's lock pool
Running
--> [wait() must have lock]Blocked in object's wait pool
--> [notify()/interrupt()]Blocked in object's lock pool
"Blocked in object's lock pool"
-up-> [acquires lock]Runnable
@enduml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21