快速绘图:画图工具PlantUML

本篇开始前我们需要知道时序图的作用,以及为什么要绘制时序图
时序图在Java中主要用于描述对象之间的交互和协作关系,以及对象之间消息传递的时间顺序。绘制时序图有以下几个原因:

  1. 明确对象间的交互关系:通过时序图可以清晰地展示各个对象之间的调用关系,帮助开发者更好地理解系统的运行流程。

  2. 便于分析和设计:时序图可以帮助开发者分析系统的性能瓶颈、潜在的问题和风险,从而优化系统设计和提高代码质量。

  3. 提高团队协作效率:时序图为团队成员提供了一个统一的交流和协作平台,有助于提高团队的沟通效率和项目的执行效率。

  4. 利于文档编写和维护:时序图为软件文档提供了直观的图形化表示,有助于提高文档的可读性和易维护性。

  5. 有助于测试和调试:时序图为测试人员提供了一个清晰的测试用例视图,有助于提高测试的效率和准确性;同时,时序图也可以帮助开发者快速定位和解决问题。

IDEA 中安装 PlantUML 插件

在 IDEA 中安装PlantUML比较方便,直接搜索 PlantUML Integration,选择下载,下载完成后重启 IDEA 安装完成。
安装Graphviz(Graphviz是一个开源的图形可视化软件,它能够从简单的文本文件描述中生成复杂的图形和网络):

brew install graphviz

流程图

@startuml
start
repeat
  :测试某事;
    if (发生错误?) then (没有)
      #palegreen:好的;
      break
    endif
    ->not ok;
    :弹窗 "文本过长错误";
repeat while (某事发生文本过长错误?) is (是的) not (不是)
->//合并步骤//;
:弹窗 "成功!";
stop
@enduml

在这里插入图片描述

  • @startuml:表示开始绘制流程图。
  • start:表示流程图的起点。
  • repeat:表示重复执行一段代码块。
  • if (发生错误?) then (没有):判断条件语句,如果发生错误则执行括号内的代码块。
  • #palegreen:好的;:在图形界面中显示绿色的文字"好的"。
  • break:跳出循环,结束重复执行。
  • endif:表示条件语句的结束。
  • ->not ok;:箭头指向"not ok"节点,表示流程的方向。
  • :弹窗 “文本过长错误”;:弹出一个对话框,显示文本"文本过长错误"。
  • repeat while (某事发生文本过长错误?) is (是的) not (不是):重复执行一段代码块,直到满足某个条件为止。
  • ->//合并步骤//;:箭头指向注释节点,表示流程的方向。
  • :弹窗 “成功!”;:弹出一个对话框,显示文本"成功!"。
  • stop:表示流程图的终点。
  • @enduml:表示结束绘制流程图。

类图

 @startuml

abstract class AbstractList
abstract AbstractCollection
interface List
interface Collection

List <|-- AbstractList
Collection <|-- AbstractCollection

Collection <|- List
AbstractCollection <|- AbstractList
AbstractList <|-- ArrayList

class ArrayList {
Object[] elementData
size()
}

enum TimeUnit {
DAYS
HOURS
MINUTES
}

@enduml

请添加图片描述
在类图中,我们可以看到以下关系:

抽象列表(AbstractList)继承自抽象集合(AbstractCollection)。
列表接口(List)继承自抽象列表(AbstractList)。
集合接口(Collection)继承自抽象集合(AbstractCollection)。
集合接口(Collection)实现列表接口(List)。
抽象集合(AbstractCollection)实现抽象列表(AbstractList)。
抽象列表(AbstractList)实现ArrayList类。

时序图

新建一个plantuml file:

@startuml
actor 用户
participant 系统

用户 -> 系统: 点击下单按钮
activate 系统
系统 -> 用户: 显示订单确认页面
deactivate 系统

用户 -> 系统: 填写订单信息
activate 系统
系统 -> 用户: 显示订单提交成功页面
deactivate 系统

用户 -> 系统: 支付订单
activate 系统
系统 -> 用户: 显示支付成功页面
deactivate 系统

用户 -> 系统: 确认收货
activate 系统
系统 -> 用户: 显示订单已完成页面
deactivate 系统
@enduml

在这里插入图片描述

在这个案例中,我们有一个用户和一个系统。用户通过点击下单按钮来触发订单流程。系统会依次执行以下操作:

显示订单确认页面,让用户确认订单信息。
显示订单提交成功页面,通知用户订单已提交成功。
支付订单,让用户完成支付操作。
显示支付成功页面,通知用户支付已成功。
确认收货,让用户确认收货信息。
显示订单已完成页面,通知用户订单已完成。

以下演示一个简单的系统登录时序图:

@startuml
actor User as U
boundary FrontEnd as FE
control LoginController as LC
entity UserService as US
database UserRepository as UR

U -> FE : Click Login Button
activate FE

FE -> LC : login(username, password)
activate LC

LC -> LC : validateInputs(username, password)
note right: 检查输入是否为空或遵循特定模式

LC -> US : verifyUserCredentials(username, password)
activate US

US -> UR : findByUsername(username)
activate UR
UR --> US : userData
deactivate UR

note over US : 校验密码
US -> US : validatePassword(password, userData.passwordHash)

US -> US : createJwtToken(username)
note right : 创建token
US --> LC : jwtToken
deactivate US

LC --> FE : authenticationResponse(jwtToken/success or error message)
deactivate LC
deactivate FE
@enduml

在这里插入图片描述

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

π克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值