首页 > 其他分享 >用 plantUML 快速绘制 UML 图

用 plantUML 快速绘制 UML 图

时间:2023-08-26 16:22:35浏览次数:96  
标签:控制器 plantUML 界面 -- deactivate UML 绘制

用 plantUML 快速绘制 UML 图

UML(统一建模语言)是一种用于软件开发中的可视化建模语言,它可以帮助我们描述系统的结构、行为和交互等方面。UML 包括了多种不同的图,例如类图、时序图、用例图等,每种图都有自己的符号和规则。

但是,要用传统的绘图工具来画 UML 图,可能会比较繁琐和耗时,而且难以维护和修改。有没有一种更简单和高效的方法来画 UML 图呢?

答案是有的,那就是 plantUML。

什么是 plantUML?

plantUML 是一个开源项目,它可以让我们用简单的文本语言来编写 UML 图,然后自动转换成图片。plantUML 支持绘制多种 UML 图,例如:

  • 时序图
  • 用例图
  • 类图
  • 对象图
  • 活动图
  • 组件图
  • 部署图
  • 状态图
  • 定时图

plantUML 还支持以下非 UML 图:

  • JSON 数据
  • YAML 数据
  • 网络图 (nwdiag)
  • 线框图形界面或 UI 模拟(盐)
  • 架构图
  • 规范和描述语言(SDL)
  • Ditaa 图
  • 甘特图
  • 思维导图
  • 工作分解结构图(WBS)
  • 用 AsciiMath 或 JLaTeXMath 符号进行数学计算
  • 实体关系图 (IE/ER)

plantUML 的优点有:

  • 简洁:只需要写几行文本就可以生成复杂的 UML 图,无需拖拽或调整符号和位置。
  • 易读:文本语言是自然语言的扩展,容易理解和记忆,也方便注释和文档化。
  • 易维护:修改文本就可以更新 UML 图,无需重新绘制或导出图片。
  • 易集成:plantUML 可以与多种编辑器、IDE 和文档工具集成,例如 VS Code、Eclipse、Word、Markdown 等,也可以作为一个独立的应用程序或服务器运行。

如何使用 plantUML?

要使用 plantUML,您需要以下几个步骤:

  1. 安装 Java 运行环境(JRE),因为 plantUML 是基于 Java 开发的。
  2. 下载 plantUML 的 jar 文件,这是 plantUML 的核心程序。
  3. 编写 plantUML 的源代码文件,这是用文本语言描述 UML 图的文件,通常以 .puml 或 .plantuml 为扩展名。
  4. 使用 plantUML 的 jar 文件来转换源代码文件为图片文件,这可以通过命令行或集成工具来实现。
  5. 查看生成的图片文件,这是最终的 UML 图。

下面我们以时序图为例,来演示一下 plantUML 的使用方法。

时序图

时序图(Sequence Diagram)是一种用于描述对象之间交互顺序的 UML 图,它可以展示对象之间发送和接收的消息以及时间顺序。

要画时序图,我们需要遵循以下几个步骤:

  1. 使用 @startuml 和 @enduml 标记来定义时序图的开始和结束。

使用 -> 或 `<-来表示两个参与者之间的消息传递,也可以使用–><–来表示点状的箭头。 3. 使用activatedeactivate来表示参与者的激活和去激活状态,以及使用altoptloop等关键字来表示条件、选择和循环等逻辑。 4. 使用notetitlelegend` 等标记来添加注释、标题和图例等信息。

例如,我们可以用以下源代码来描述一个用户登录的时序图:

@startuml
title 用户登录时序图
actor 用户
boundary 界面
control 控制器
entity 服务
database 数据库

用户 -> 界面 : 输入用户名和密码
activate 界面
界面 -> 控制器 : 验证用户输入
activate 控制器
控制器 -> 服务 : 调用登录服务
activate 服务
服务 -> 数据库 : 查询用户信息
activate 数据库
数据库 --> 服务 : 返回用户信息
deactivate 数据库
alt 用户信息匹配
  服务 --> 控制器 : 返回登录成功
  控制器 --> 界面 : 显示欢迎信息
else 用户信息不匹配
  服务 --> 控制器 : 返回登录失败
  控制器 --> 界面 : 显示错误信息
end
deactivate 服务
deactivate 控制器
deactivate 界面

@enduml

使用 plantUML 的 jar 文件来转换源代码文件为图片文件,我们可以得到以下时序图:

 

从上面的例子可以看出,plantUML 的文本语言非常简洁和易读,而且可以生成清晰和美观的 UML 图。

总结

plantUML 是一个非常强大和实用的工具,它可以让我们用简单的文本语言来绘制 UML 图,而无需使用复杂和繁琐的绘图工具。plantUML 支持绘制多种 UML 图和非 UML 图,而且可以与多种编辑器、IDE 和文档工具集成。plantUML 可以帮助我们提高软件开发中的可视化建模能力,也可以增加我们的沟通和协作效率。

如果您想了解更多 plantUML 的语法和功能,您可以参考以下链接:

标签:控制器,plantUML,界面,--,deactivate,UML,绘制
From: https://www.cnblogs.com/shoshana-kong/p/17658969.html

相关文章

  • Python绘图:小提琴图的理解与绘制
    目录一、小提琴图简介1.1小提琴图的概念1.2小提琴图与箱线图、核密度函数以及高斯混合体之间的关系与区别二、箱线图的绘制2.1基于matplotlib库的箱线图绘制(1)函数主要参数及功能(2)函数返回值(3)示例2.2基于seaborn库的箱线图绘制(1)函数主要参数功能及其返回值(2)示例附录Python绘图......
  • 画时序图、类图、用例图的神器staruml使用常见问题汇总
    staruml是一款开放源码的UML开发工具,可绘制9款UML图:用例图、类图、序列图、状态图、活动图、通信图、模块图、部署图以及复合结构图等当然还有很多其他工具如SoftwareIdeasModeler,甚至有在线画时序图的:https://www.websequencediagrams.com/,不过速度很......
  • UML类图
    UML类图  一、什么是UML  统一建模语言(UnifiedModelingLanguage,缩写UML)是非专利的第三代建模和规约语言。  UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。   UML分为模型和图形两大类。区分U......
  • echarts 实现在柱状图绘制标注点
    如图:     代码复用参考:letsymbolArray=['triangle','rect','circle','arrow','diamond','emptyRect','emptyTriangle'];letsymbolColors=['pink','blue',&#......
  • Python:箱线图的理解与绘制
    目录一、箱线图简介二、箱线图的绘制2.1基于matplotlib库的箱线图绘制2.2基于seaborn库的箱线图绘制附录Python绘图待扩展阅读一、箱线图简介如下图所示,箱线图(箱形图、盒须图)是一种基于5个统计量(上边界、上四分位数、中位数、下四分位数以及下边界)显示数据分布的标准化方法,其......
  • 峰会回顾第7期 | 视窗绘制技术演进和新趋势
    本文转载自 OpenHarmony TSC 官方微信公众号《峰会回顾第7期 | 视窗绘制技术演进和新趋势》演讲嘉宾 | 陈秋林回顾整理 | 廖   涛排版校对 | 李萍萍  嘉宾简介陈秋林,华为终端OS资深架构师、菲尔兹Lab主任,长期从事终端OS研发,先后负责LiteOS、安卓......
  • Canvas绘制毛玻璃背景分享海报
    最近重新设计了分享海报,用毛玻璃作为背景,使整体更有质感,如果没有用到canvas,毛玻璃效果其实很好实现,给元素添加一个滤镜即可(比如:filter:blur(32px)),但是实践的过程中发现,canvas在IOS端一直没有效果,查了一个文档发现IOS端不支持filter。。。有点想骂人。。(PS:微信官方有关CanvasRende......
  • Matplotlib 绘制多图
    Matplotlib绘制多图我们可以使用pyplot中的subplot()和subplots()方法来绘制多个子图。subplot()方法在绘图时需要指定位置,subplots()方法可以一次生成多个,在调用时只需要调用生成对象的ax即可。1、subplotsubplot(nrows,ncols,index,**kwargs)subplot(pos,**kwar......
  • Matplotlib 散点图、柱形图、饼图绘制
    1、Matplotlib散点图我们可以使用pyplot中的scatter()方法来绘制散点图。scatter()方法语法格式如下:matplotlib.pyplot.scatter(x,y,s=None,c=None,marker=None,cmap=None,norm=None,vmin=None,vmax=None,alpha=None,linewidths=None,*,edgecolors=None,plot......
  • 防止openlayers在draw绘制状态按shift功能失效
    newDraw({source:this.map.source,type:type,geometryFunction:geometryFunction,condition:()=>{returntrue;},freehandCondition:()=>{returnfalse;}});......