PlantUML画类图、流程图、时序图使用详解
程序员难免要经常画流程图,状态图,时序图等。以前经常用 visio
画,经常为矩形画多大,摆放在哪等问题费脑筋。有时候修改文字后,为了较好的显示效果不得不再去修改图形。今天介绍的工具是如何使用
PlantUML 的插件画流程图,状态图,时序图等。这是一种程序员看了就会爱上的画图方式:自然,高效。
什么是 PlantUML
PlantUML 是一个画图脚本语言,用它可以快速地画出:
- 类图:http://plantuml.com/class-diagram
- 流程图:http://plantuml.com/activity-diagram-beta
- 时序图:http://plantuml.com/sequence-diagram
- 用例图:http://plantuml.com/use-case-diagram
- 状态图:http://plantuml.com/state-diagram
- 组件图:http://plantuml.com/component-diagram
1. 类图
案例1:
@startumlabstract class AbstractList
abstract AbstractCollection
interface List
interface CollectionList <|-- AbstractList
Collection <|-- AbstractCollectionCollection <|- List
AbstractCollection <|- AbstractList
AbstractList <|-- ArrayListclass ArrayList {
Object[] elementData
size()
}enum TimeUnit {
DAYS
HOURS
MINUTES
}@enduml
案例2:
@startuml
class Track
class Media
class Trip{String tripID;String tracks;String medias;
}
Trip --> Track
Trip --> Mediainterface ITripTrackCollection{void start();void stop();void pause();void destory();
}
class TripTrackCollection implements ITripTrackCollection{Vector<LocationInfo> mLocations;ExtcutorService mVecoterThread;ScheduledExecutorService mDatabaseThread;
}class TrackCollectService extends Service implements ITripTrackCollection{TripTrackCollection TripTrackCollection;
}
TrackCollectService -->TripTrackCollection
@enduml
2. 流程图
案例1:
@startuml
(*) --> "check input"
If "input is verbose" then
--> [Yes] "turn on verbosity"
--> "run command"
else
--> "run command"
Endif
-->(*)
@enduml
案例2:
start
:"步骤1处理";
:"步骤2处理";
if ("条件1判断") then (true):条件1成立时执行的动作;if ("分支条件2判断") then (no):"条件2不成立时执行的动作";elseif ("条件3判断") then (yes):"条件3成立时的动作";else (no):"条件3不成立时的动作";endifendif:"顺序步骤3处理";
endifif ("条件4判断") then (yes)
:"条件4成立的动作";
elseif ("条件5判断") then (yes):"条件5成立时的动作";else (no):"条件5不成立时的动作";endif
endif
stop
@enduml
3.时序图
案例1:
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication ResponseAlice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
案例2:
@startuml
title Android Broadcast procedure
participant Activity #Lime
participant ContextWrapper #Cyan
participant ContextImpl #Cyan
participant ActivityManagerService #Cyan
participant ActivityStackSupervisor #Cyan
participant ActivityStack #Cyan
participant ApplicationThreadProxy #Silver
participant InnerReceiver #Magenta
participant ReceiverDispatcher #Magenta
participant BroadcastReceiver #Magentaautonumber
Activity -> ContextWrapper : registerReceiver()
ContextWrapper -> ContextImpl : registerReceiver()
ContextImpl -> LoadedApk : getReceiverDispatcher()
LoadedApk -> ActivityManagerProxy : registerReceiver()
ActivityManagerProxy -> ActivityManagerService : registerReceiver()Activity -> ContextWrapper : sendBroadcast()
ContextWrapper -> ContextImpl : sendBroadcast()
ContextImpl -> ActivityManagerService: broadcastIntent()
ActivityManagerService -> ActivityManagerService : broadcastIntentLocked()
ActivityManagerService -> ActivityManagerService : collectReceiverComponents()
ActivityManagerService -> ActivityManagerService : scheduleBroadcastsLocked()
ActivityManagerService -> ActivityManagerService : processNextBroadcast()
ActivityManagerService -> ActivityManagerService : deliverToRegisteredReceiverLocked()
ActivityManagerService -> ActivityManagerService : performReceiveLocked()
ActivityManagerService -> ApplicationThreadProxy : scheduleRegisteredReceiver()
ApplicationThreadProxy -> InnerReceiver : performReceive()
InnerReceiver -> ReceiverDispatcher : performReceive()
ReceiverDispatcher -> BroadcastReceiver : onReceive()Activity -> ContextWrapper : sendOrderedBroadcast()
ContextWrapper -> ContextImpl : sendOrderedBroadcast()
ContextImpl -> ActivityManagerService: broadcastIntent()
@enduml
4. 用例图:
@startuml
:Main Admin: as Admin
(Use the application) as (Use)User -> (Start)
User --> (Use)Admin ---> (Use)note right of Admin : This is an example.note right of (Use)
A note can also
be on several lines
end notenote "This note is connected\nto several objects." as N2
(Start) .. N2
N2 .. (Use)
@enduml
5. 状态图
@startuml
scale 350 width
[*] --> NotShootingstate NotShooting {[*] --> IdleIdle --> Configuring : EvConfigConfiguring --> Idle : EvConfig
}state Configuring {[*] --> NewValueSelectionNewValueSelection --> NewValuePreview : EvNewValueNewValuePreview --> NewValueSelection : EvNewValueRejectedNewValuePreview --> NewValueSelection : EvNewValueSavedstate NewValuePreview {State1 -> State2}}
@enduml
6. 组件图
案例1:
@startumlpackage "Some Group" {
HTTP - [First Component]
[Another Component]
}package "Other Groups" {
FTP - [Second Component][First Component] --> FTP
}@enduml
案例2:
@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
PlantUML画类图、流程图、时序图使用详解相关推荐
- PlantUML 用代码画思维导图,时序图,流程图
PlantUML 是一个开源项目,支持通过脚本绘图.PlantUML 可以绘制如下种类的 UML 图: 时序图 用例图 类图 活动图 组件图 状态图 对象图 部署图 定时图 同时还支持以下非 UML ...
- 推荐一款超级好用的开源画图工具:用例图、架构图、时序图、类图、E-R图、甘特图
在项目开发的过程中需要各种类型的图来进行支撑,比如用例图.系统架构图.时序图.类图.E-R图,甚至项目管理的甘特图等等.为了画这些图我们往往需要寻找各类付费.免费的软件进行操作. 今天给大家推荐一款开 ...
- Eclipse 插件用法:Eclipse 利用 Amateras UML 生成 Java 类图、时序图和 UML 类图
文章目录 前言 一.安装 Eclipse 官方提供的安装框架 GEF 1.1.Eclipse 中第三方插件更新/安装策略 1.2.为什么选择 GEF 框架? 1.3.GEF 框架安装 二.安装 Ama ...
- 【设计相关】UML类图和时序图介绍
文章目录 一. 什么是UML UML的定义 UML的应用场景 类图(Class Diagrams) 类关系 继承关系 记忆技巧 案例 汽车关系 购票机 类说明 方法说明 时序图(Sequence Di ...
- 看懂UML类图和时序图
看懂UML类图和时序图 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图 ...
- IEDA一键生成类图和时序图
在软件开发的时候,一般正常的开发流程是先写文档,在根据文档来进行开发,但是大部分的公司都是先开发,然后在补文档.在写文档的时候,就需要画大量的类图和时序图.手动画图需要花费大量的时间.现在好多的Ide ...
- 机械动作时序图怎么画_快速学习时序图:时序图简介、画法及实例
原标题:快速学习时序图:时序图简介.画法及实例 时序图作为常用的UML交互图,可以直观的传达系统内外之间的交互过程,经常用在详细设计文档中.下面本文综合参考了多篇时序图的教程,根据作者的思路将时序图做 ...
- eclipse下生成Java类图和时序图,生成UML图
0.美图 最近老板让我做类图和时序图 1. 安装和使用AmaterasUML 安装AmaterasUML前,需要先安装GEF 采用eclipse在线安装方式安装就好. eclipse在线安装GEF的地 ...
- 【统一登录认证】企业微信统一认证系统流程整理 流程图 时序图
[统一登录认证]企业微信统一认证系统流程整理 流程图 / 时序图
- 用gif图展示UML中箭头和线条的含义,及搞懂UML类图、时序图和用例图
前言 新进入一家公司,应对 日常的软件开发工作和交流,要能看懂别人写的代码各个类之间的关系,那就需要您能看懂类图uml中各个类之间的线条.箭头代表什么意思? UML的类图中,一共有以下六大关系: 泛化 ...
最新文章
- Linux 安装图形界面及远程连接
- ASP.NET之父强烈推荐,无可争议的圣经级巨著
- 2、垃圾回收算法(标记清除算法、复制算法、标记整理算法和分代收集算法),各种垃圾收集器讲解(学习笔记)
- iOS逆向之深入解析如何Hook所有+load方法及Category的处理
- 远程连接ubuntu中mysql的数据库
- 【渝粤教育】电大中专测量学 (4)作业 题库
- php写dnf脚本,dnf分解机脚本c
- 8_7.网络安全协议
- WPS自动生成目录。
- 27.(cesium篇)cesium接入百度影像地图
- 从安卓/linux固件反编译出dtb和dts
- reactjs前端实现文件新窗口下载
- 菜鸟日记(yzy) 微信公众号网页的开发基础(微信接口调用)
- 桂电深信服CTF之MSC真假压缩包
- 光盘或者U盘安装linux操作系统
- 《惢客创业日记》2018.12.29(周六)取代手机的“量子智能标签”
- chrome浏览器安全检查_为您的Chrome浏览器检查皮肤
- vue 屏幕自适应及全屏放大缩小
- faster R-CNN中anchors 的生成过程(generate_anchors源码解析)
- 视频号直播单月带货30万+,苹果竟成直播爆品