PlantUML-用例图语法(及部分通用内容)

作者:vkvi 来源:ITPOW(原创) 日期:2022-2-9

基础部分

角色

冒号括起来,或使用关键字 actor

用例

括号括起来,或使用关键字 usecase

关系

使用 --><---><- 将角色指向用例。

如果要表现包含、扩展关系,需使用虚线,就将减号换成点

更多含义,请继续阅读本文后面样式一节。

泛化

使用 --|><|---|><|- 实现泛化。

更多含义,请继续阅读本文后面样式一节。

示例

:厨师:
actor 中餐厨师


(做菜)
usecase 做炒菜

厨师 <|-- 中餐厨师
做菜 <|-- 做炒菜

中餐厨师 --> 做炒菜

效果:

用例图1

这个图形很奇怪吧,没关系,继续阅读,后面有讲布局的,布局也不复杂,只是改变下符号即可。比如:将“中餐厨师 --> 做炒菜”中的“-”去掉一个,“做炒菜”,就跑到“中餐厨师”右边了。

PlantUML 具有推测能力,所以有时候不一定写全,比如上面的,也可以写作:

厨师 <|-- 中餐厨师
(做菜) <|-- (做炒菜)

中餐厨师 --> 做炒菜

效果是一样的。

进阶部分

别名

可以指定别名,免得后面写一长串,另外还可以有效解决空格问题,比如:

:English Teacher: as et
et --> (Teach English)

效果:

用例图2

备注

note left ofnote right ofnote top ofnote bottom of

加上对象,再加冒号,再加备注内容

:English Teacher: as et
et --> (Teach English)

note left of et : 中国教师
note right of (Teach English) : 一节课 45 分钟

效果:

用例图备注

定义备注,前面的备注都是直接写在某个对象上的,但是有时候定义为备注,再去关联它,更方便,因为这可以关联多个对象,定义好后,用 .. 或 == 分别关联对象,注意:哪个在左哪个在右,会影响布局.. 或 == 的数量,也会影响线的长度

:English Teacher: as et
et --> (教学)
et --> (翻译)

note "这个备注关联多个对象" as myNote
et .. myNote
 (教学) === myNote
myNote == (翻译)

定义备注

换行

使用 \n角色用例备注都可使用 \n 实现换行。

备注中换行,也可以不用 \n,而是直接换然后以 end note 结束,但此时不要冒号了,以下是 2 种写法:

note right of (Teach English) : 一节课 45 分钟\n每天最多 2 节

note right of (Teach English)
一节课 45 分钟
每天最多 2 节
end note

关系说明(标签)

也是用冒号隔开。

:English Teacher: as et
et --> (Teach English) : 远程教学

用例图关系说明

用例描述

使用 --..==__ 放在用例中,然后用例的 as 后面,加上引号,可以产生横线、双横线等,但是这种情况下只能用 usecase 关键字,不能用括号,且有空格时,不能使用引号。

:English Teacher: as et
usecase TeachEnglish as "1
--
2
..
3
==
4
__
5
==高级效果=="
et --> TeachEnglish

用例描述

用例包

使用 package 把用例框起来,语法:package 包名称 { 各个用例 }。

:English Teacher: as et
package 学校 {
  (教学)
  (翻译)
}
package 校外 {
  (文化交流)
}

et --> 教学
et --> 翻译

用例包

Stereotypes

使用 <<>>,角色和用例均支持。

:English Teacher: as et <<虚拟机器人>>
package 学校 {
  (教学)
  (翻译)
}

et --> 教学
et --> 翻译

Stereotypes

样式部分

用例位置

使用 <----><-->,实现上、下、左、右效果。

:English Teacher: as et

 (上) <-- et
et --> (下)
 (左) <- et
et -> (右)

用例位置

当然,还可以使用关键词来表示位置,比如:-top->-left->……。

左右布局?

如上,当我们试图使用“->”实现 actor 在左,usecase 在右时,当有多个 usecase 时,actor 并没有在中间,看起有点乱,我们此时就需要使用命令改变方向了。

不好看的布局

left to right direction

left to right direction
:a: --> (b)
:a: --> (c)

left to right direction

这样看起就舒服了。

更长的关系线

使用更多的 - 符号。 

:English Teacher: as et

et --> (教学)
et ------> (翻译)

更长的关系线

泛化的位置与线条

与用例位置、关系线的用法类似。

不要火柴人

skinparam actorStyle awesome

skinparam actorStyle awesome

:English Teacher: as et
et --> (Teach English)

不要火柴人

改变线条颜色

skinparam actorStyle awesome

:English Teacher: as et
et --> (教学) #red;line.bold;text:red : 很重要
et --> (翻译) #green;line.dashed
et --> (交流) #green;line.dotted

改变线条颜色

 改变元素颜色

skinparam actorStyle awesome

:English Teacher: as et #red;line:green;line.dashed;text:blue


元素颜色

  • # 开头。

  • 多个属性之间分号隔开。

  • 颜色直接写(不同的对象,颜色是指背景还是前景,有不同的含义)。

  • 线的颜色要加前缀 line:

  • 文字的颜色要加前缀 text:

  • 线的样式,直接写,但是值是 line. 开头。

总结

: 常表示 Label。

# 常表示样式。

横线、下划线、等号、点点表示线条样式和长度。

大于、小于号也影响布局位置。

相关阅读

相关文章