PlantUML流程图语法学习实践

embedded/2025/1/16 17:56:43/


前言

        PlantUML流程图在软件开发中具有多种用途,使用PlantUML生成的UML图表可以帮助审查者更快地理解代码的结构和逻辑;在AI发展的大环境中,可以借助plantUML语法生成的伪代码形式利用promt直接生成开发代码。

一、PlantUML

        PlantUML 是一款非常强大的开源工具,用于生成各种 UML 图表,包括类图、序列图、活动图、用例图等。我们可以从plantUML官网的指导手册学习其语法,并使用网站提供的在线工具编写plantuml代码,查看下载流程图
        Open-source tool that uses simple textual descriptions to draw beautiful UML diagrams.

        对于开发设计工程师人员来说,plantUML可以用'序列图'便捷的描述模块间的通信,可以用'活动图'描述代码框架/代码逻辑。

        例如:

二、序列图

        序列图用于描述几个参与者之前的关系,能够清晰地展示对象之间的消息传递和交互过程,以下是如何使用PlantUML绘制序列图的说明和示例。

1.编写要点

(1)声明参与者

        最简单的例子可以使用->直接描述参与者之间的关联;还可以在开头声明参与者,后续仅通过例如代号A B C来编写多个参与者之间的交互:

@startuml
participant role1 as A
participant role2 as B
participant role3 as C
A -> B : To B
A -> C : To C
B -> C : To C
@enduml

                        

        参与者类型包括如下几种,其类型定义和对应的图案如下所示:

(2) 格式设置

        设置参与者颜色,直接在定义后面跟颜色的编码:

                participant role1 #red

                participant role1 as A #FF0000

        设置文本对齐,在开头定义skinparam sequenceMessageAlign,后面可以设置left right center:

                skinparam sequenceMessageAlign left

        设置箭头样式、颜色和箭头指向角度:

                A --[#red](10)> B

        对消息内容编号,使用autonumber,后面可以设置编号起始值:

                autonumber 10

        消息分割,使用newpage;

        设置延迟:

                ... ... ...

 示例:

@startuml
autonumber
skinparam sequenceMessageAlign left
participant role1 as A
participant role2 as B
participant role3 as C
A --[#red]>(10) B : To B
... ... ... ...
A -> C : To C
newpage
autonumber 11
B -> C : To C
@enduml

                                

2.示例

@startuml
skinparam sequenceMessageAlign center
participant 客户端 as Client
participant 服务器 as Server
== TCP 三次握手 ==
Client -> Server: SYN
Server -> Client: SYN ACK
Client -> Server: ACK
== 发送HTTP请求和响应 ==
Client -> Server: HTTP Request Get
Server -> Client: HTTP Response
== TCP 四次挥手 ==
Client -> Server: FIN
Server -> Client: ACK
Server -> Client: FIN
Client -> Server: ACK
@enduml

                

三、活动图

        活动图用于描述几个动作之间的顺序关系,能够清晰地展示代码逻辑,明确代码架构,以下是如何使用PlantUML绘制活动图的说明和示例。

1.编写要点

(1) 简单活动图

        使用start stop标识流程的开始结束;使用':'';'标识一个动作       

@startuml
start
:Hello world;
stop
@enduml

(2) 条件语法

        条件语法包括:

        if (...) then (...)        then后通常标识yes no      else (...)    endif
        if (...) is (...) then     is后通常标识yes no

        条件判断终止,使用kill或者detach

        

@startuml
if (条件?) then (no)
#pink:错误;
detach
else (yes)
endif
#palegreen:行为;
@enduml

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

(3) 循环语法

        使用关键字 repeat 和 repeatwhile 进行重复循环,使用 backward 关键字插入一个全
局行为,使用break跳出循环。

2.示例

@startuml
repeat :测试某事;
if (发生错误?) then (没有)
#palegreen:好的;
break
endif
->not ok;
:弹窗 "错误";
backward :cnt++;
repeat while (重试次数<3?) is (是的) not (不是)
:结束;
stop
@enduml

        ​​​​​​​        ​​​​​​​        ​​​​​​​        

四、AI辅助根据plantUML代码生成

#include <stdio.h>int main() {int cnt = 0;  // 重试次数计数器while (cnt < 3) {// 测试某事if (测试某事()) {// 如果没有发生错误printf("好的\n");break;  // 跳出循环} else {// 如果发生错误printf("弹窗 \"错误\"\n");cnt++;  // 增加重试次数}}if (cnt >= 3) {// 如果重试次数达到3次printf("结束\n");}return 0;
}// 模拟测试某事的函数
int 测试某事() {// 这里可以实现具体的测试逻辑// 返回1表示没有错误,返回0表示发生错误// 为了示例,这里随机返回一个值return 0;  // 假设每次都发生错误
}

http://www.ppmy.cn/embedded/154445.html

相关文章

Bash语言的语法糖

Bash语言的语法糖 Bash&#xff08;Bourne Again SHell&#xff09;是一种常用的Unix Shell&#xff0c;它为用户提供了一种命令行界面&#xff0c;用于与操作系统进行交互。虽然在功能上&#xff0c;Bash允许进行复杂的脚本编写、文件操作与系统管理&#xff0c;但是对于初学…

UnityDemo-TheBrave-制作笔记

这是我跟着b站up主MStudio的视频学习制作的&#xff0c;大体上没有去做一些更新的东西&#xff0c;这里只是一个总的总结。在文章的最后&#xff0c;我会放上可以游玩该游戏的链接和exe可执行文件&#xff0c;不过没有对游戏内容进行什么加工&#xff0c;只有基本的功能实现罢了…

zerotier已配置但ip连不上?

利用zerotier内网渗透&#xff0c;在公网上远程连接使用局域网内的服务器&#xff0c;经常遇到连接不上的问题 zerotier配置过程 解决方法 声明&#xff1a;个人使用过程中&#xff0c;发现的有效解决方法&#xff0c;不一定能解决所有人的问题 总结&#xff1a; 重启Zerotier…

AI刷题-最大矩形面积问题、小M的数组变换

目录 一、最大矩形面积问题 问题描述 输入格式 输出格式 输入样例 输出样例 数据范围 解题思路&#xff1a; 问题理解 数据结构选择 算法步骤 最终代码&#xff1a; 运行结果&#xff1a; 二、小M的数组变换 问题描述 测试样例 解题思路&#xff1a; 问题…

通过proto文件构建 完整的 gRPC 服务端和客户端案例

基础教程-简单案例&#xff08;快入入门java-grpc框架&#xff09; 参考官方入门案例教程&#xff1a;里面我看proto编译&#xff0c;其实直接用maven就能直接将.proto文件编译成java代码。快速入门 | Java | gRPC 框架https://grpc.org.cn/docs/languages/java/quickstart/ …

辅助云运维

为客户提供运维支持&#xff0c;保障业务连续性。 文章目录 一、服务范围二、服务内容三、服务流程四、 服务交付件五、责任分工六、 完成标志 一、服务范围 覆盖范围 云产品使用咨询、问题处理、配置指导等&#xff1b; 云产品相关操作的技术指导&#xff1b; 云相关资源日常…

宝塔面板 php8.0 安装 fileinfo 拓展失败

系统&#xff1a;Albaba Cloud Linux release 3 &#xff08;OpenAnolis Editon&#xff09;即 Centos 平替 异常提示&#xff1a; cc: fatal error: ** signal terminated program cc1 compilation terminated. make: *** [Makefile:211: libmagic/apprentice.lo] Error 1搜…

内聚耦合软件工程

内聚是软件工程中用来描述一个模块内部各个元素彼此结合的紧密程度的度量指标。它对于模块的独立性和可维护性有着重要影响。 内聚的类型 内聚性可以从低到高分为以下几种类型&#xff1a; 1. 偶然内聚&#xff1a;模块内的各处理元素之间没有任何联系。这种内聚性最弱。 2…