PlantUML

概述
PlantUML是一个多功能组件,可快速、直接地创建图表。用户可以使用简单直观的语言起草各种图表。
时序图
基本使用
语法

@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

Alice -> Bob: Another authentication Request
Alice <-- Bob: Another authentication Response
@enduml

示例
在这里插入图片描述

常用语法
常用关键字
● as:重命名
● participant:用于声明参与者

参与者
如果使用关键字participant 来声明参与者,就可以对该参与者进行更多的控制。声明的顺序将是显示顺序。使用这些其他的关键字来声明参与者,将改变参与者的表示形状。
● actor(角色)
● boundary(边界)
● control(控制)
● entity(实体)
● database(数据库)
● collections(集合)
● queue(队列)
语法

@startuml
participant Participant as Foo
actor       Actor       as Foo1
boundary    Boundary    as Foo2
control     Control     as Foo3
entity      Entity      as Foo4
database    Database    as Foo5
collections Collections as Foo6
queue       Queue       as Foo7
Foo -> Foo1 : To actor 
Foo -> Foo2 : To boundary
Foo -> Foo3 : To control
Foo -> Foo4 : To entity
Foo -> Foo5 : To database
Foo -> Foo6 : To collections
Foo -> Foo7: To queue
@enduml

示例
在这里插入图片描述

箭头样式
语法

@startuml
participant Alice as a
participant Bob   as b
a -[#red]>     b : ""->   ""
a -[#00FF00]>>    b : ""->>  ""
a -\     b : ""-\   ""
a -\\    b : ""-\\\\""
a -/     b : ""-/   ""
a -//    b : ""-//  ""
a ->x    b : ""->x  ""
a x->    b : ""x->  ""
a o->    b : ""o->  ""
a ->o    b : ""->o  ""
a o->o   b : ""o->o ""
a <->    b : ""<->  ""
a o<->o  b : ""o<->o""
a x<->x  b : ""x<->x""
a ->>o   b : ""->>o ""
a -\o    b : ""-\o  ""
a -\\o   b : ""-\\\\o""
a -/o    b : ""-/o  ""
a -//o   b : ""-//o ""
!pragma teoz true
a x->o   b : ""x->o ""
& b -> : 串行
@enduml

示例

在这里插入图片描述
序列编号
autonumber stop 表示暂停编号
autonumber resume //increment// //format// 来表示继续使用自动编号。
autonumber inc A/B/C/D…表示自动标号的递增
语法

@startuml
autonumber
Bob -> Alice : test
autonumber stop
Bob <- Alice : test autonumber stop
autonumber resume
Bob <- Alice : test autonumber resume

autonumber 15
Bob -> Alice : test autonumber reset
Bob <- Alice : test autonumber reset

autonumber 40 10
Bob -> Alice : test autonumber reset and add Number of intervals
Bob <- Alice : test autonumber reset and add Number of intervals


autonumber 1.2.1.1
Bob -> Alice : test autonumber Default auto increment last digit
Bob <- Alice : test autonumber Default auto increment last digit
autonumber inc A
Bob -> Alice : test autonumber Self increasing first place
Bob <- Alice : test autonumber Self increasing first place
autonumber inc B
Bob -> Alice : test autonumber Self increasing second place
Bob <- Alice : test autonumber Self increasing second place

autonumber inc C
Bob -> Alice : test autonumber Self increasing second place
Bob <- Alice : test autonumber Self increasing second place
@enduml

示例
在这里插入图片描述

页面标题、页眉、页脚、分割
title 关键字用于为页面添加标题。页面可以使用header 和footer 显示页眉和页脚。
语法

@startuml

title Example Title1
header Page Header1
footer Page <font color=red>%page%</font> of %lastpage%
Alice -> Bob : message 1
Alice -> Bob : message 2

newpage Example Title2
header Page Header2
footer Page <font color=red>%page%</font> of %lastpage%
Alice -> Bob : message 1
Alice -> Bob : message 2
@enduml

示例
在这里插入图片描述

组合消息
● alt/else
● opt
● loop
● par
● break
● critical
● group, 后面紧跟着消息内容
关键词 end 用来结束分组。注意,分组可以嵌套使用。
语法

@startuml
Alice -> Bob: test
alt #Gold #LightBlue 情况1
    Bob -> Alice: test action1
else #Pink 情况2
    Bob -> Alice: test action2
    group Group标签 [Group二级标签]
    Alice -> Bob : test group
        loop 循环1000次
            Alice -> Bob: DNS 攻击
        end
    Alice -> Bob :end test group
    end
else #Red 情况3
   Bob -> Alice: test action3
end

opt opt选择标签
Alice -> Bob: test opt
end
par par平均普通标签
Alice -> Bob: test par
end
critical critical关键标签
Alice -> Bob: test critical
end
break break打断标签
Alice -> Bob: test break
end
@enduml

示例
在这里插入图片描述注释
● note left of,note right of或note over在节点(participant)的相对位置放置注释
● hnote代表六边形(hexagonal)的备注框;
● rnote代表正方形(rectangle)的备注框
● 关键字end note来添加多行注释
语法

@startuml
participant Alice
participant Bob
note left of Alice #aqua
This is displayed
left of Alice.
end note
note right of Alice: This is displayed right of Alice.
note over Alice: This is displayed over Alice.
note over Alice, Bob #FFAAAA: This is displayed\n over Bob and Alice.
note over Bob, Alice
This is yet another
example of
a long note.
end note

hnote over Alice : 空闲
rnote over Bob
"r"是正方形
"h"是六边形
end rnote
rnote over Bob
多
行
文本
endrnote
hnote over Alice,Bob
多
行
文本
endhnote
@enduml

示例
在这里插入图片描述

分隔符,引用,延迟
● == 关键词来将你的图表分割成多个逻辑步骤
● ref over 关键词来实现引用
● … 来表示延迟,并且还可以给延迟添加注释。
● ||| 来增加空间。
语法

@startuml
== 分隔符1 ==
Alice -> Bob: 发送消息
== 分隔符2 ==
...延迟5分钟后...
Alice <-- Bob: 返回消息

ref over Alice:ref引用标签
ref over Alice,Bob
Alice -> Bob: 发送消息1
Alice <-- Bob: 返回消息1
end ref

Alice -> Bob: 发送消息2
|||
Alice <-- Bob: 返回消息2

Alice -> Bob: 发送消息3
||50||
Alice <-- Bob: 返回消息3
@enduml

示例
在这里插入图片描述

生命线
关键字 activate 和 deactivate 用来表示参与者的生命活动。 一旦参与者被激活,它的生命线就会显示出来。 activate 和 deactivate 适用于以上情形。 destroy 表示一个参与者的生命线的终结。
语法

@startuml
participant User
== 普通生命线 ==
User -> A: DoWork
activate A
A -> B: << createRequest >>
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: RequestCreated
deactivate B
A -> User: Done
deactivate A
== 嵌套生命线 ==
User -> A: DoWork
activate A #FFBBBB
A -> A: Internal call
activate A #DarkSalmon
A -> B: << createRequest >>
activate B
B --> A: RequestCreated
deactivate B
deactivate A
A -> User: Done
deactivate A

@enduml

示例
在这里插入图片描述

锚点和持续时间
teoz 在图表中添加锚点,从而指定持续时间
语法

@startuml
!pragma teoz true
{start} Alice -> Bob : start doing things during duration
Bob -> Max : something
Max -> Bob : something else
{end} Bob -> Alice : finish
{start} <-> {end} : some time
@enduml

示例
在这里插入图片描述
包裹参与者
box 和 end box 画一个盒子将参与者包裹起来。 还可以在 box 关键字之后添加标题或者背景颜色。
语法

@startuml
box "Internal Service" #LightBlue
participant Bob
participant Alice
end box
participant Other
Bob -> Alice : hello
Alice -> Other : hello
@enduml

示例
在这里插入图片描述

外观参数
用 skinparam 改变字体和颜色。 可以在如下场景中使用:
● 在图示的定义中,
● 在引入的文件中,
● 在命令行或者 ANT 任务提供的配置文件中
语法

@startuml
skinparam sequenceArrowThickness 2
skinparam roundcorner 20
skinparam maxmessagesize 60
skinparam sequenceParticipant underline
actor User
participant "First Class" as A
participant "Second Class" as B
participant "Last Class" as C
User -> A: DoWork
activate A
A -> B: Create Request
activate B
B -> C: DoWork
activate C
C --> B: WorkDone
destroy C
B --> A: Request Created
deactivate B
A --> User: Done
deactivate A
@enduml

示例
在这里插入图片描述
类图
元素声明

语法

@startuml
abstract abstract
abstract class "abstract class"
annotation annotation
circle circle
() circle_short_form
class class
class class_stereo <<stereotype>>
diamond diamond
<> diamond_short_form
entity entity
enum enum
exception exception
interface interface
metaclass metaclass
protocol protocol
stereotype stereotype
struct struct
@enduml

示例
在这里插入图片描述

类之间的关系
● 类(Class):使用三层矩形框表示。第一层显示类的名称,如果是抽象类,则就用斜体显示。第二层是字段和属性。第三层是类的方法。
● 继承类(extends):用空心三角形+实线来表示。
● 关联(Association):用实线箭头来表示。
● 聚合(Aggregation):用空心的菱形+实线箭头来表示。聚合:表示一种弱的‘拥有’关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。
● 组合(Composition):用圆形加号+实线箭头来表示。组合:部分和整体的关系,并且生命周期是相同的。
● 依赖(Dependency):用虚线箭头来表示。
语法

@startuml
Class01 <|-- Class02: 泛化,继承
Class03 +-- Class04: 组合
Class05 o-- Class06: 聚合
Class07 .. Class08:依赖
Class09 --> Class10:关联
Class11 *-- Class12
Class13 -- Class14
Class15 ..> Class16
Class17 ..|> Class18
Class19 <--* Class20
Class21 #-- Class22
Class23 x-- Class24
Class25 }-- Class26
Class27 <|.. Class28
Class29 ^-- Class30
@enduml

示例
在这里插入图片描述
可访问性, 抽象与静态 , 抽象类和接口
语法

@startuml
class Class1 {
-field1
#field2
~field3
+field4
-method1(int num)
-method1(String str)
#method2()
~method3()
+method4()
}
note left of Class1::field1
field1成员已注释
end note
note right of Class1::"method1(int num)"
这个method1方法的参数是int类型
end note
note right of Class1::"method1(String str)"
这个method1方法的参数是String类型
end note
class Class2 {
-{static} field1
#{static}field2
~{static}field3
+{static}field4
-{static}staticMethod1()
#{static}staticMethod2()
~{static}staticMethod3()
+{static}staticMethod4()
-{abstract}abstractMethod1()
#{abstract}abstractMethod2()
~{abstract}abstractMethod3()
+{abstract}abstractMethod4()
}
abstract class Class3 {
-{abstract}abstractMethod1()
#{abstract}abstractMethod2()
~{abstract}abstractMethod3()
+{abstract}abstractMethod4()
}
interface Interface1 {
-method1()
}
enum TimeUnit {
DAYS
HOURS
MINUTES
}
annotation SuppressWarnings
@enduml

示例
在这里插入图片描述
包 ,包样式
● package 声明包,同时可选的来声明对应的背景色
● skinparam packageStyle 设置默认样式
语法

@startuml
skinparam packageStyle rectangle
package "Classic Collections" #DDDDDD {
Object <|-- ArrayList
}
package net.sourceforge.plantuml {
Object <|-- Demo1
Demo1 *- Demo2
}

scale 750 width
package foo1 <<Node>> {
class Class1
}
package foo2 <<Rectangle>> {
class Class2
}
package foo3 <<Folder>> {
class Class3
}
package foo4 <<Frame>> {
class Class4
}
package foo5 <<Cloud>> {
class Class5
}
package foo6 <<Database>> {
class Class6
}
@enduml

示例
在这里插入图片描述
辅助布局
● together 关键词将某些类进行分组
● hidden 链接的方式来强制布局
语法

@startuml
class Bar1
class Bar2
together {
class Together1
class Together2
class Together3
}
Together1 - Together2
Together2 - Together3
Together2 -[hidden]--> Bar1
Bar1 -[hidden]> Bar2
@enduml

示例
在这里插入图片描述

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值