[转]PlantUML画类图、流程图、时序图使用详解
程序员难免要经常画流程图,状态图,时序图等。以前经常用 visio
画,经常为矩形画多大,摆放在哪等问题费脑筋。有时候修改文字后,为了较好的显示效果不得不再去修改图形。今天介绍的工具是如何使用
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的类图中,一共有以下六大关系: 泛化 ...
最新文章
- CSLA .NET概述
- android 电视安装apk文件损坏,android - 无法在Android电视盒上安装APK - 堆栈内存溢出...
- python 如何获取数组(列表)长度? len()
- java 基础安装和Tomcat8配置
- laravel 分词搜索匹配度_【地名地址】面向智慧城市的高精度地名地址匹配方法...
- ecs服务器数据迁移_如何非常方便地从Windows文件服务器把数据完整地迁移到ONTAP Select...
- matlab toolbox 向量,mosek optimization toolbox for matlab提供的函数简介
- Android Studio导入model
- vscode的IntelliCode扩展报错
- 如何将图片转化为base64编码格式显示
- 利用Racher轻松构建PASS平台
- 定积分及其应用知识点总结_定积分知识点总结.doc
- 运维工程师到底是做什么的?
- PHP 获取网页标题(title)、描述(description)、关键字(keywords)等meta信息
- APP - K歌之王请进!全民K歌可一键分享到微信状态
- 第13届蓝桥杯赛后感想
- 【程序人生】外包公司派遣到网易,上班地点网易大厦,转正后工资8k-10k,13薪,包三餐,值得去吗?
- 转载作品:人生重开模拟器(修仙7.0版)
- 电商广告营销中,有哪些常见公式和优化手段
- linux下s3c2440开发板,SAMSUNG S3C2440 ARM LINUX 开发板 上手初体验 --开发环境搭建