PasseRR

xie__hai@sina.com

PlantUml的使用

25 Sep 2017 » others

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

活动图