返回顶部
首页 > 资讯 > 后端开发 > Python >plantuml画图实现代码画时序图UML用例图
  • 557
分享到

plantuml画图实现代码画时序图UML用例图

2024-04-02 19:04:59 557人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录引言1. PlantUML 简介2. PlantUML的安装使用3.如何用PlantUML 画时序图4. 如何用PlantUML 画UML用例图5. 如何用plantUML 画思

引言

最近通过代码来画时序图,UML用例图,感觉很不错,所以给大家分享一下。

日常开发,一般在设计阶段,我们都需要画时序图、用例图等等。大家平时画图的时候,是用draw.io还是processOn呢?用它们画出的图,其实都很挺好看的。但是呢,今天田螺哥介绍一个款开源的,画图神器!用代码就能画图,配合IDE使用,画图高效简单,信手拈来,还挺美观的。这个神奇就是PlantUML

GitHub地址

1. PlantUML 简介

PlantUML是一个开源项目,可以快速编写UML图的工具。它可以支持编码的方式来生成图形。可以用来画时序图、UML用例图、类图、思维导图、ER图等等。

PlantUML 画出来的图,简洁美观,先给大家看看,一个用PlantUML画出来的登录时序图,以及对应画图的代码,如下:

@startuml
title Sequence Diagram of User login
actor User as user
participant "gateway" as gateway
participant "user-core" as userCore
database "Mysql" as mysql
database "Redis" as redis
autonumber
user-> gateway:login request,param:username,passWord
activate gateway
gateway-> userCore:forward the login request
activate userCore
userCore-> userCore :check the login param
userCore-> mysql:query user info from mysql by username
activate mysql
mysql-> userCore:response with username and password
deactivate mysql
userCore->userCore:compare the requested password with the DB's password
userCore-> userCore: generate an unique token
userCore--> redis: save the token to redis
userCore-> gateway: response with the token
deactivate userCore
gateway-> user: login success with the token
deactivate gateway
@enduml

登录用例时序图如下:

2. PlantUML的安装使用

PlantUML的安装很方便的.有个插件,名字是:PlantUML Integration,大家可以去IDE的插件市场,搜索安装即可,如下:

安装成功后,想快速体验一般的话.可以新建一个项目,然后新建一个plantUML File文件,然后把我上个小节,登录时序图那个代码复制进去,就可以看到登录时序图啦.

3.如何用PlantUML 画时序图

什么是时序图?

时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。它可以表示用例的行为顺序,当执行一个用例行为时,其中的每条消息对应一个类操作或状态机中引起转换的触发事件。

如何用PlantUML画时序图呢?

你可以先新建一个PlantUML文件

然后选择Sequence,并定义一个文件名称

就会有默认的时序图生成啦.

我们照着登录时序图的代码,来大概说下每个关键词的意思吧.

@startuml
title Sequence Diagram of User login
actor User as user
participant "gateway" as gateway
participant "user-core" as userCore
database "MySQL" as mysql
database "Redis" as redis
autonumber
user-> gateway:login request,param:username,password
activate gateway
gateway-> userCore:forward the login request
activate userCore
userCore-> userCore :check the login param
userCore-> mysql:query user info from mysql by username
activate mysql
mysql-> userCore:response with username and password
deactivate mysql
userCore->userCore:compare the requested password with the DB's password
userCore-> userCore: generate an unique token
userCore--> redis: save the token to redis
userCore-> gateway: response with the token
deactivate userCore
gateway-> user: login success with the token
deactivate gateway
@enduml

关键词解释如下:

  • title:表示该UML用例图的标题
  • actor:表示人形的参与者
  • as: 使用as 关键字命名参与者。你可以把它理解成定义变量一样,as后面跟着的就是变量,声明后,我们后面就可以使用这个变量啦
  • participant:表示普通的参与者,它跟actor的主要区别是:形状不一样
  • database:表示参与者形状是数据库.
  • 显示的顺序是怎么定义的:声明的参与者顺序将是(默认的)显示顺序。
  • autonumber:可以给参与者添加顺序
  • ->:表示绘制两个参与者之间的信息,如果你希望是虚线,可以使用-->.
  • activatedeactivate:表示参与者的生命线

当然,PlantUML功能挺丰富的,它还可以组合消息,虽然在我的登录时序图还没体现出来. 它提供了alt/else、opt、loop来组合消息.如下:

@startuml
Alice -> Bob: 认证请求
alt 登录成功
    Bob -> Alice: 认证接受
else 某种失败情况
    Bob -> Alice: 认证失败
    group 我自己的标签
    Alice -> Log : 开始记录攻击日志
        loop 1000次
            Alice -> Bob: DNS 攻击
        end
    Alice -> Log : 结束记录攻击日志
    end
else 另一种失败
   Bob -> Alice: 请重复
end
@enduml

对应的时序图如下:

4. 如何用PlantUML 画UML用例图

什么是用例图?

用例图(英语:use case diagram)是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。通过用例图,人们可以获知系统不同种类的用户和用例。用例图也经常和其他图表配合使用。

如何用PlantUML画UML用例图呢?

你可以先新建一个PlantUML文件,然后选择user case,并定义个文件名

就会有默认的UNML用例图生成啦

我挑官网一个用例图demo来介绍吧,代码如下:

@startuml
left to right direction
actor Guest as g
package Professional {
  actor Chef as c
  actor "Food Critic" as fc
}
package Restaurant {
  usecase "Eat Food" as UC1
  usecase "Pay for Food" as UC2
  usecase "Drink" as UC3
  usecase "Review" as UC4
}
fc --> UC4
g --> UC1
g --> UC2
g --> UC3
@enduml

对应生成的用例图如下:

来看下每个关键词的意思:

  • left to right direction:表示从左到右绘制用例图
  • actor Guest as g:定义一个人形参与者,变量别名是g.
  • package Professional:定义一个包package,名字为Professional.package可以用来对用例和角色分组.
  • usecase "Eat Food" as UC1:定义一个用例,别名为UC1.
  • fc --> UC4:表示角色fc和用例UC4关联起来.角色和用例之间的关系,用-->来表示。

5. 如何用plantUML 画思维导图

什么是思维导图?

英文是The Mind Map,又名心智导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效同时又很高效,是一种实用性的思维工具。

写了一个简单的思维导图,代码如下:

@startmindmap
* 
** 计算机网络面试题
*** tcp/IP十五连问
*** 两万字计算机面试题汇总
** MySQL面试题
** Redis面试题
** 大厂面试真题
*** 虾皮十五连问
*** 五年Oppo后端面试真题
*** 腾讯云十五连问
@endmindmap

plantUML画思维导图,还是挺简单的,大家可以看下效果

6. 如何用planUML 画活动流程图

什么是活动图?

动态图(activity diagram,活动图)是阐明了业务用例实现的工作流程。

我画了一个简单版的登录活动流程图:

@startuml
title Activity Diagram of User login
start
:user request login;
if (is request param null?) then (N)
  :query user info by username;
  if (is user info  null ?) then (N)
    :compare the password;
    if (Is password right?) then (Y)
      :generate a token ,and set it to redis;
      :response with login success;
    else(N)
       :response with wrong password code;
       stop
    endif
  else(Y)
    :response with error userinfo;
    stop
  endif
else(Y)
  :response with error param;
  stop
  endif
stop
@enduml

生成的流程图如下:

活动图关键解释如下:

  • start表示活动图流程的开始
  • stop表示活动图流程的结束
  • :user request login;:表示活动流程节点为user request login,需要加:;的哈
  • if+then+endif表示一个完整的条件判断

最后

本文介绍了plantUML画图,有兴趣的小伙伴,可以移步官网学习哈.

plantUM 官网 https://plantuml.com/zh/

更多关于plantuml画图时序图的资料请关注编程网其它相关文章!

--结束END--

本文标题: plantuml画图实现代码画时序图UML用例图

本文链接: https://lsjlt.com/news/164588.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • plantuml画图实现代码画时序图UML用例图
    目录引言1. PlantUML 简介2. PlantUML的安装使用3.如何用PlantUML 画时序图4. 如何用PlantUML 画UML用例图5. 如何用plantUML 画思...
    99+
    2024-04-02
  • java画图代码实现
    要使用Java语言进行图形绘制,可以使用Java的图形库,如AWT(Abstract Window Toolkit)或Swing等。...
    99+
    2023-09-23
    java
  • Python画图常用代码总结,这20个画图代码现拿现用
    目录 前言 1、散点图 2、带边界的气泡图 3、带线性回归最佳拟合线的散点图 4、抖动图 5、计数图 6、边缘直方图 7、边缘箱形图 9、矩阵图 10、发散型条形图 11、发散型文本 12、发散型包点图 13、带标记的发散型棒棒糖图...
    99+
    2023-09-01
    python 开发语言 数据分析
  • 使用python matplotlib画折线图实例代码
    目录matplotlib简介1、画折线图【一条示例】2、画折线图带数据标签3、画多条折线图:4、画多条折线图分别带数据标签:总结matplotlib简介 matplotlib 是py...
    99+
    2024-04-02
  • C#实现简易画图板的示例代码
    编程环境 VS2019、C# 画板功能演示 实现简单画图 打开功能 可打开jpg格式的文件 保存功能 可将绘画的内容保存为jpg文件 颜色选择功能 用户可自由选择所需的颜色...
    99+
    2024-04-02
  • Android 画一个太极图实例代码
    今天练手一下,一起来画个太极图吧~ 最终效果如下: 最终效果 一般都是先讲原理,我就反其道而行,先讲实现吧。 1.继承实现初始化方法 继承View,实现基本的构造函数: ...
    99+
    2022-06-06
    太极 Android
  • 使用IDEA画UML图的详细步骤
    目录UML简介如何使用IDEA画UML图安装PlantUML插件安装GraphvizGraphviz安装和环境变量配置Graphviz安装环境变量配置  写在前面:大家好...
    99+
    2024-04-02
  • python 画图时各种颜色代码
    颜色搭配 点击配色:https://culrs.com/ 颜色协调的原则是避免颜色选择过度,能够表达清晰明了的设计主题。以下是一些通用的基本颜色搭配方案,其中每种方案都包括9种颜色: 红色、黄色、...
    99+
    2023-10-09
    python 人工智能
  • Android画图并保存图片的具体实现代码
    Canvas是一个画布,你可以建立一个空白的画布,就直接new一个Canvas对象,不需要参数。也可以先使用BitmapFactory创建一个Bitmap对象,作为新的Canv...
    99+
    2022-06-06
    图片 Android
  • python利用json和pyecharts画折线图实例代码
    目录一.json模块对数据进行处理 二.利用pyecharts画折线图 三.利用pyecharts画美、日、印三国家折线图 四.本文数据集 注:本次实验...
    99+
    2022-12-26
    python利用json和pyecharts画折线图 python画折线图
  • Android画图实现MPAndroidchart折线图示例详解
    目录效果图依赖activity.xmlMainActivityMyMarkerView 自定义classmaekertextview .xml常用属性效果图 用的是3.1.0的依赖...
    99+
    2024-04-02
  • python画条形图实例
    本文实例为大家分享了python画条形图的具体代码,供大家参考,具体内容如下 在做毕设的过程中有些数据用表格来展现,会很难看出数据之间的差别,凸显不出数据的特点,所以想制作一个条形图...
    99+
    2024-04-02
  • python画时间序列散点图
    在运维管理中,经常遇到时间序列的数据,比如网卡流量、在线用户数、并发连接数,等等。用散点图可以直观的查看数据的分布情况。 matplotlib模块的pyplot有画散点图的函数,但是该函数要求x轴是数字类型。pandas的plot函数里,散...
    99+
    2023-01-31
    序列 时间 python
  • C++ opencv实现在图片上画一条线示例代码
    1 在图片上用鼠标进行操作,opencv主要用到setMouseCallback()函数。 winname 窗口名称 onMouse 鼠标事件的回调函数 userdata 传递给回...
    99+
    2024-04-02
  • Android实现画中画功能(图片)
    简介: Android 8.0(API 级别 26)允许以画中画 (PIP) 模式启动 Activity。画中画是一种特殊类型的多窗口模式,最常用于视频播放。使用该模式,用户可以通过...
    99+
    2024-04-02
  • Android图片翻转动画简易实现代码
    下面给大家分享一个有趣的动画:这里比较适合一张图片的翻转,如果是多张图片,可以参考APIDemo里的例子,就是加个ArrayAdapter,还是简单的,也可以自己发挥修改,实现...
    99+
    2022-06-06
    动画 Android
  • android 简单图片动画播放的实例代码
    xml中: 代码如下:        <ImageView   &nb...
    99+
    2022-06-06
    图片 动画 Android
  • powerdesigner怎么画用例图
    这篇文章主要介绍“powerdesigner怎么画用例图”,在日常操作中,相信很多人在powerdesigner怎么画用例图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”powerdesigner怎么画用例图...
    99+
    2023-07-05
  • Python科学画图代码分享
    Python画图主要用到matplotlib这个库。Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。 这里有一本电子书供大家参考:《...
    99+
    2022-06-04
    画图 代码 科学
  • css画太极图代码分享
    这篇文章主要介绍“css画太极图代码分享”,在日常操作中,相信很多人在css画太极图代码分享问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css画太极图代码分享”的疑惑有所帮...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作