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的类图中,一共有以下六大关系: 泛化 ...
最新文章
- 杭电acm2043密码
- 【转】PCA算法学习_1(OpenCV中PCA实现人脸降维)
- 动手开始创建第一个 Angular 应用并通过 gh-pages 发布到 Github 上
- java web课程题目_JavaWeb开发技术试题题目及答案,课程2020最新期末考试题库,章节测验答案...
- 一起学习C语言:C语言循环结构(一)
- 更深更宽的孪生网络,有效提升目标跟踪精度,代码开源
- 网易手游《幻书启世录》将于2022年2月14日停止运营
- 【共读Primer】52.[6.3]返回类型和return语句--返回数组指针 Page205
- 内核页表隔离(Kernel page-table isolation,KPTI,简称PTI,旧称KAISER)
- YUM只下载软件不安装的设定
- ubuntu 18.04 卸载 mysql 过程记录
- 9.RabbitMQ实战 --- 使用REST API控制Rabbit
- timesten java_java直接访问Timesten的数据库
- 统计学中常被误用的分析方法
- 程序员需要了解英国文学
- 【服务器数据恢复】IBM某型号服务器VMware虚拟机误删除的数据恢复案例
- 怎么用计算机磁盘管理分区,在win 7中如何用磁盘管理为硬盘分区呢?
- 除尘器选型需要考虑的因素
- 阿里云mysql自动备份_如何使用脚本自动备份阿里云rds数据库
- 美股历史行情数据 API 接口