程序员难免要经常画流程图,状态图,时序图等。以前经常用 visio
画,经常为矩形画多大,摆放在哪等问题费脑筋。有时候修改文字后,为了较好的显示效果不得不再去修改图形。今天介绍的工具是如何使用
PlantUML 的插件画流程图,状态图,时序图等。这是一种程序员看了就会爱上的画图方式:自然,高效。

什么是 PlantUML

PlantUML 是一个画图脚本语言,用它可以快速地画出:

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画类图、流程图、时序图使用详解相关推荐

  1. PlantUML 用代码画思维导图,时序图,流程图

    PlantUML 是一个开源项目,支持通过脚本绘图.PlantUML 可以绘制如下种类的 UML 图: 时序图 用例图 类图 活动图 组件图 状态图 对象图 部署图 定时图 同时还支持以下非 UML ...

  2. 推荐一款超级好用的开源画图工具:用例图、架构图、时序图、类图、E-R图、甘特图

    在项目开发的过程中需要各种类型的图来进行支撑,比如用例图.系统架构图.时序图.类图.E-R图,甚至项目管理的甘特图等等.为了画这些图我们往往需要寻找各类付费.免费的软件进行操作. 今天给大家推荐一款开 ...

  3. Eclipse 插件用法:Eclipse 利用 Amateras UML 生成 Java 类图、时序图和 UML 类图

    文章目录 前言 一.安装 Eclipse 官方提供的安装框架 GEF 1.1.Eclipse 中第三方插件更新/安装策略 1.2.为什么选择 GEF 框架? 1.3.GEF 框架安装 二.安装 Ama ...

  4. 【设计相关】UML类图和时序图介绍

    文章目录 一. 什么是UML UML的定义 UML的应用场景 类图(Class Diagrams) 类关系 继承关系 记忆技巧 案例 汽车关系 购票机 类说明 方法说明 时序图(Sequence Di ...

  5. 看懂UML类图和时序图

    看懂UML类图和时序图 这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图 ...

  6. IEDA一键生成类图和时序图

    在软件开发的时候,一般正常的开发流程是先写文档,在根据文档来进行开发,但是大部分的公司都是先开发,然后在补文档.在写文档的时候,就需要画大量的类图和时序图.手动画图需要花费大量的时间.现在好多的Ide ...

  7. 机械动作时序图怎么画_快速学习时序图:时序图简介、画法及实例

    原标题:快速学习时序图:时序图简介.画法及实例 时序图作为常用的UML交互图,可以直观的传达系统内外之间的交互过程,经常用在详细设计文档中.下面本文综合参考了多篇时序图的教程,根据作者的思路将时序图做 ...

  8. eclipse下生成Java类图和时序图,生成UML图

    0.美图 最近老板让我做类图和时序图 1. 安装和使用AmaterasUML 安装AmaterasUML前,需要先安装GEF 采用eclipse在线安装方式安装就好. eclipse在线安装GEF的地 ...

  9. 【统一登录认证】企业微信统一认证系统流程整理 流程图 时序图

    [统一登录认证]企业微信统一认证系统流程整理 流程图 / 时序图

  10. 用gif图展示UML中箭头和线条的含义,及搞懂UML类图、时序图和用例图

    前言 新进入一家公司,应对 日常的软件开发工作和交流,要能看懂别人写的代码各个类之间的关系,那就需要您能看懂类图uml中各个类之间的线条.箭头代表什么意思? UML的类图中,一共有以下六大关系: 泛化 ...

最新文章

  1. CSLA .NET概述
  2. android 电视安装apk文件损坏,android - 无法在Android电视盒上安装APK - 堆栈内存溢出...
  3. python 如何获取数组(列表)长度? len()
  4. java 基础安装和Tomcat8配置
  5. laravel 分词搜索匹配度_【地名地址】面向智慧城市的高精度地名地址匹配方法...
  6. ecs服务器数据迁移_如何非常方便地从Windows文件服务器把数据完整地迁移到ONTAP Select...
  7. matlab toolbox 向量,mosek optimization toolbox for matlab提供的函数简介
  8. Android Studio导入model
  9. vscode的IntelliCode扩展报错
  10. 如何将图片转化为base64编码格式显示
  11. 利用Racher轻松构建PASS平台
  12. 定积分及其应用知识点总结_定积分知识点总结.doc
  13. 运维工程师到底是做什么的?
  14. PHP 获取网页标题(title)、描述(description)、关键字(keywords)等meta信息
  15. APP - K歌之王请进!全民K歌可一键分享到微信状态
  16. 第13届蓝桥杯赛后感想
  17. 【程序人生】外包公司派遣到网易,上班地点网易大厦,转正后工资8k-10k,13薪,包三餐,值得去吗?
  18. 转载作品:人生重开模拟器(修仙7.0版)
  19. 电商广告营销中,有哪些常见公式和优化手段
  20. linux下s3c2440开发板,SAMSUNG S3C2440 ARM LINUX 开发板 上手初体验 --开发环境搭建

热门文章

  1. 计算机网络————P3 速率相关的性能指标
  2. SQL FILESTREAM数据库中的事务日志备份
  3. 前端工作学习相关网站收集整理
  4. #2009. 「SCOI2015」小凸玩密室
  5. [hdu2222]Keywords Search(AC自动机)
  6. 清除定时器 和 vue 中遇到的定时器setTimeout setInterval问题
  7. LINUX mysql 源码安装
  8. 背包九讲之三(多重背包)
  9. Dynamic CRM 2013学习笔记(二十二)插件里调用WCF服务
  10. 数据结构与算法分析-用C语言实现栈(数组方式)