程序员难免要经常画流程图,状态图,时序图等。以前经常用 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画类图、流程图、时序图使用详解相关推荐

  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. Linux 安装图形界面及远程连接
  2. ASP.NET之父强烈推荐,无可争议的圣经级巨著
  3. 2、垃圾回收算法(标记清除算法、复制算法、标记整理算法和分代收集算法),各种垃圾收集器讲解(学习笔记)
  4. iOS逆向之深入解析如何Hook所有+load方法及Category的处理
  5. 远程连接ubuntu中mysql的数据库
  6. 【渝粤教育】电大中专测量学 (4)作业 题库
  7. php写dnf脚本,dnf分解机脚本c
  8. 8_7.网络安全协议
  9. WPS自动生成目录。
  10. 27.(cesium篇)cesium接入百度影像地图
  11. 从安卓/linux固件反编译出dtb和dts
  12. reactjs前端实现文件新窗口下载
  13. 菜鸟日记(yzy) 微信公众号网页的开发基础(微信接口调用)
  14. 桂电深信服CTF之MSC真假压缩包
  15. 光盘或者U盘安装linux操作系统
  16. 《惢客创业日记》2018.12.29(周六)取代手机的“量子智能标签”
  17. chrome浏览器安全检查_为您的Chrome浏览器检查皮肤
  18. vue 屏幕自适应及全屏放大缩小
  19. faster R-CNN中anchors 的生成过程(generate_anchors源码解析)
  20. 视频号直播单月带货30万+,苹果竟成直播爆品

热门文章

  1. 零基础搭建ASP.NET网站---(2)网站建设
  2. 教你如何建设一个多语言版的ASP网站
  3. MS Project 2010视频教程总结
  4. 1222 可以攻击国王的皇后
  5. PHP+MySQL制作留言板
  6. 刚给msn加上了对话自动翻译
  7. 怎样重装系统(win7/)
  8. 【python】TensorFlow框架下CNN神经网络的花卉识别系统
  9. unknown action type: xxx
  10. Google Chrome浏览器、360极速浏览器必备的N个插件