使用PlantUML快速绘图
来源:互联网 发布:python修改文件内容 编辑:程序博客网 时间:2024/06/08 09:12
PlantUML是一个快速创建UML图形的组件,官网上之所以称它是一个组件,我 想主要是因为多数情况下我们都是在Eclipse、NetBenas、Intellijidea、 Emacs、 Sublime 、Word等软件里来使用PlantUML。
PlantUML通过简单和直观的语言来定义图形,它可以生成PNG、SVG和二进制 图片。PlantUML支持的图形有:
- 时序图
- 用例图
- 类图
- 活动图
- 组件图
- 状态图
- 对象图
在IDEA中安装PlantUML插件
在IDEA上安装Plugin非常简单,这里不做详细介绍。需要注意的一个问题是,PlantUML画图需要生成图片的软件Graphviz,所以如果第一次画图出现下面的提示请安装上Graphviz,然后重启IDEA即可。
Graphviz下载地址:http://www.graphviz.org/Download..php。
快速绘图
时序图
@startumltitle 时序图== 鉴权阶段 ==Alice -> Bob: 请求Bob -> Alice: 应答== 数据上传 ==Alice -> Bob: 上传数据note left: 这是显示在左边的备注Bob --> Canny: 转交数据... 不超过 5 秒钟 ...Canny --> Bob: 状态返回note right: 这是显示在右边的备注Bob -> Alice: 状态返回== 状态显示 ==Alice -> Alice: 给自己发消息@enduml
- 使用 title 来指定标题
- ‘->’ 和 ‘–>’ 来指示线条的形式
- 在每个时序后面加冒号 : 来添加注释
- 使用 note 来显示备注,备注可以指定显示在左边或右边
- 使用 == xxx == 来分隔时序图
- 使用 … 来表示延迟省略号
- 节点可以给自己发送消息
活动图(新语法)
@startumlstart:"步骤1处理";:"步骤2处理";if ("条件1判断") then (true) :条件1成立时执行的动作; if ("分支条件2判断") then (no) :"条件2不成立时执行的动作"; else if ("条件3判断") then (yes) :"条件3成立时的动作"; else (no) :"条件3不成立时的动作"; endif endif :"顺序步骤3处理";endifif ("条件4判断") then (yes):"条件4成立的动作";else if ("条件5判断") then (yes) :"条件5成立时的动作"; else (no) :"条件5不成立时的动作"; endifendifstop@enduml
- 使用 start 来表示流程开始,使用 stop 来表示流程结束
- 顺序流程使用冒号和分号 :xxx; 来表示
- 条件语句使用 if (“condition 1”) then (true/yes/false/no) 来表示
- 条件语句可以嵌套
类图
@startumltitle 类图scale 1.5/'组合关系(composition)'/class Human { - Head mHead; - Heart mHeart; .. - CreditCard mCard; -- + void travel(Vehicle vehicle);}Human *-up- Head : contains >Human *-up- Heart : contains >/'聚合关系(aggregation)'/Human o-left- CreditCard : owns >/'依赖关系(dependency)'/Human .down.> Vehicle : dependent/'关联关系(association'/Human -down-> Company : associate/'继承关系(extention)'/interface IProgram { + void program();}class Programmer { + void program();}Programmer -left-|> Human : extendProgrammer .up.|> IProgram : implement@enduml
- scale 生成图片倍数
- 默认的,字段和方法是由PlantUML自动分组的,你也可以使用: – .. == __这些分隔符手动进行分组
- up、down、left、right定义线的起始方位。
- PlantUML用下面的符号来表示类之间的关系:
- 泛化,Generalization:<|–
- 关联,Association:<–
- 组合,Composition:*–
- 聚合,Aggregation:o–
- 实现,Realization:<|..
- 依赖,Dependency:<..
用例图
@startumlleft to right directionactor 消费者actor 销售员rectangle 买单 {消费者 -- (买单)(买单) .> (付款) : include(帮助) .> (买单) : extends(买单) -- 销售员}@enduml
- 使用 actor 来定义参与者
- 使用括号 (xxx) 来表示用例,用例用椭圆形表达
- 使用不同的线条表达不同的关系。
组件图
我们经常使用组件图来画部署视图,或者用来画系统的拓扑结构图。
@startumlpackage "组件1" { ["组件1.1"] - ["组件1.2"] ["组件1.2"] -> ["组件2.1"]}node "组件2" { ["组件2.1"] - ["组件2.2"] ["组件2.2"] --> [负载均衡服务器]}cloud { [负载均衡服务器] -> [逻辑服务器1] [负载均衡服务器] -> [逻辑服务器2] [负载均衡服务器] -> [逻辑服务器3]}database "MySql" { folder "This is my folder" { [Folder 3] } frame "Foo" { [Frame 4] }}[逻辑服务器1] --> [Folder 3][逻辑服务器2] --> [Frame 4][逻辑服务器3] --> [Frame 4]@enduml
- 使用方括号 [xxx] 来表示组件
- 可以把几个组件合并成一个包,可以使用的关键字为 package, node, folder, frame, cloud,database。不同的关键字图形不一样。
- 在包内部用不同的箭头表达同一个包的组件之间的关系
- 在包内部直接表达到另外一个包内部的组件的交互关系
- 在流程图外部直接表达包之间或包的组件之间的交互关系
状态图
@startumlscale 350 width[*] --> NotShootingstate NotShooting { [*] --> Idle Idle --> Configuring : EvConfig Configuring --> Idle : EvConfig}state Configuring { [*] --> NewValueSelection NewValueSelection --> NewValuePreview : EvNewValue NewValuePreview --> NewValueSelection : EvNewValueRejected NewValuePreview --> NewValueSelection : EvNewValueSaved state NewValuePreview { State1 -> State2 }}@enduml
- 使用 [*] 来表示状态的起点
- 使用 state 来定义子状态图
- 状态图可以嵌套
- 使用 scale 命令来指定生成的图片的尺寸
最后,不需要死记这些标记,用的时候去查,通过不断的使用来熟悉各种标记,附上网址:http://plantuml.com/。
1 0
- 使用PlantUML快速绘图
- PlantUML 使用
- 绘图工具(代码实现绘图)---plantuml
- AndroidStudio中使用plantUML
- 使用sublime+PlantUML画图
- AndroidStudio中使用plantUML
- PlantUML组合sublimetext使用
- UML工具使用:PlantUML
- AndroidStudio中使用plantUML
- AndroidStudio中使用plantUML
- PlantUML
- PlantUml
- PlantUML
- windows 配置 emacs 使用 plantuml
- 在 Eclipse 里使用 PlantUML
- 一种使用Qt快速绘图的思路
- 使用sublime text3的插件PlantUML画图
- 使用 Sublime + PlantUML 高效地画图
- CF 467A-George and Accommodation
- Android Service完全解析,关于服务你所需知道的一切(上)
- windows API分类
- 共享单车在过度竞争中陷入互黑战
- 深入理解javascript原型和闭包(13)-【作用域】和【上下文环境】
- 使用PlantUML快速绘图
- 【完整版:深度学习环境配置】
- 8皇后问题
- 1106. Lowest Price in Supply Chain (25)
- jqery粘贴事件
- Android Service完全解析,关于服务你所需知道的一切(下)
- cookie学习
- 创建docker私有仓库
- Java多线程(二)- 常用方法