PlantUml
快速绘制
大多UML图可以在官网上找到Demo,这里以常用的为例
类图
关系 | 符号 | 说明 |
---|---|---|
泛化(Generalization) | <|-- | 是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为 |
实现(Realization) | <|.. | 是一种类与接口的关系,表示类是接口所有特征和行为的实现 |
关联(Association) | -- | 是一种拥有的关系,它使一个类知道另一个类的属性和方法 |
聚合(Aggregation) | o-- | 是整体与部分的关系,且部分可以离开整体而单独存在 |
组合(Composition) | *-- | 是整体与部分的关系,但部分不能离开整体而单独存在 |
依赖(Dependency) | <.. | 是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖 |
一辆车的基本关系如下:
@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 | ![]() |
时序图
去ATM取钱的时序图
@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 | ![]() |
活动图
以Java线程状态为例
@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 | ![]() |