前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PlantUML 入门

PlantUML 入门

作者头像
王小明_HIT
发布2021-11-12 10:23:35
6280
发布2021-11-12 10:23:35
举报
文章被收录于专栏:程序员奇点

前言

plantUML 是门语言,这个,掌握了达到所见即所得的效果,即用编写语言的方式,就可以画出需要的时序图,流程图,用例图等。这里抛砖引玉,希望大家都能学习下,平时做系统设计的时候都能用得上。

时序图

简单例子

你可以用-> 来绘制参与者之间传递的消息,而不必显式地声明参与者。你也可以使用 --> 绘制一个虚线箭头。另外,你还能用 <- 和 <--,这不影响绘图,但可以提高可读性。注意:仅适用于时序图,对于其它示意图,规则是不同的。

代码语言:javascript
复制
@startuml
用户 -> 认证中心: 登录操作
认证中心 -> 缓存: 存放(key=token+ip,value=token)token
用户 <- 认证中心 : 认证成功返回token
用户 -> 认证中心: 下次访问头部携带token认证
认证中心 <- 缓存: key=token+ip获取token
其他服务 <- 认证中心: 存在且校验成功则跳转到用户请求的其他服务
其他服务 -> 用户: 信息
@enduml

图例如下:

生命线的激活和撤销

代码语言:javascript
复制
@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
@enduml

图示如下:

声明参与者

使用 participant 关键字来声明一个参与者可以使你对参与者做出更多控制。关键字 participant 用于改变参与者的先后顺序。你也可以使用下面这些关键字来声明参与者,这会改变参与者的外观:

  • actor(角色)
  • boundary(边界)
  • control(控制)
  • entity(实体)
  • database(数据库)
  • collections(集合)
  • queue(队列)
代码语言:javascript
复制
@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

在这里插入图片描述

用例

用例定义

用例用圆括号括起来(两个圆括号看起来就像椭圆)。也可以用关键字 usecase 来定义用例。还可以用关键字 as 定义一个别名,这个别名可以在以后定义关系的时候使用。

代码语言:javascript
复制
@startuml
(First usecase)
(Another usecase) as (UC2)
usecase UC3
usecase (Last\nusecase) as UC4
@enduml

在这里插入图片描述

角色定义

角色用两个冒号包裹起来。也可以用 actor 关键字来定义角色。还可以用关键字 as 来定义一个别名,这个别名可以在以后定义关系的时候使用。在后面的例子中,我们会看到角色的定义是可选的

代码语言:javascript
复制
@startuml
:First Actor:
:Another\nactor: as Man2
actor Woman3
actor :Last actor: as Person1
@enduml

在这里插入图片描述

完整例子

代码语言:javascript
复制
@startuml
left to right direction
skinparam packageStyle rectangle
actor customer
actor clerk
rectangle checkout {
customer -- (checkout)
(checkout) .> (payment) : include
(help) .> (checkout) : extends
(checkout) -- clerk
}
@enduml

在这里插入图片描述

类图

元素声明

代码语言:javascript
复制
@startuml
abstract abstract
abstract class "abstract class"
annotation annotation
circle circle
() circle_short_form
class class
diamond diamond
<> diamond_short_form
entity entity
enum enum
interface interface
@enduml

在这里插入图片描述

类之间的关系

类之间的关系通过下面的符号定义:

使用.. 来代替 -- 可以得到点线. 在这些规则下,也可以绘制下列图形

代码语言:javascript
复制
@startuml
Class01 <|-- Class02
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 -- Class10
@enduml

在这里插入图片描述

活动图(流程图)

代码语言:javascript
复制
@startuml
start
if (condition A) then (yes)
:Text 1;
elseif (condition B) then (yes)
:Text 2;
stop
elseif (condition C) then (yes)
:Text 3;
elseif (condition D) then (yes)
:Text 4;
else (nothing)
:Text else;
endif
stop
@enduml

在这里插入图片描述

添加方法

为了声明字段 (对象属性)或者方法,你可以使用后接字段名或方法名。系统检查是否有括号来判断是方法还是字段。

代码语言:javascript
复制
@startuml
Object <|-- ArrayList
Object : equals()
ArrayList : Object[] elementData
ArrayList : size()
@enduml

在这里插入图片描述

参考资料

  • https://plantuml.com/zh/
  • https://usermanual.wiki/Pdf/PlantUMLLanguageReferenceGuideZH.1851971531/view
  • https://bytedance.feishu.cn/docs/doccn5h7psCVcPlBcxXkOWt0UIM
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员奇点 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 时序图
    • 简单例子
      • 生命线的激活和撤销
        • 声明参与者
        • 用例
          • 用例定义
            • 角色定义
              • 完整例子
              • 类图
                • 元素声明
                  • 类之间的关系
                  • 活动图(流程图)
                    • 添加方法
                      • 参考资料
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档