一小时实践入门 PlantUML 您所在的位置:网站首页 vscode如何导出plantuml图 一小时实践入门 PlantUML

一小时实践入门 PlantUML

2024-04-15 08:00| 来源: 网络整理| 查看: 265

简介

PlantUML 是一个开源工具,允许用户使用纯文本描述来创建 UML (统一建模语言) 图形。由于它使用文本来描述图形,因此可以很容易地将这些描述与源代码一起存储在版本控制系统中。然后,PlantUML 负责将这些描述转换为图形。

以下是关于 PlantUML 的一些关键点:

文本描述:

用户使用特定的语法和关键词描述 UML 图。这种方法特别适合开发人员,因为它们可以使用自己熟悉的文本编辑器或 IDE。

多种输出格式:

PlantUML 支持多种输出格式,如 PNG、SVG 和 LaTeX。

集成能力:

由于其文本基础的特性,PlantUML 可以轻松地与各种工具集成,例如 Wikis、论坛、文档生成工具和其他应用程序。

广泛的 UML 图支持:

支持各种 UML 图,包括序列图、用例图、类图、活动图、组件图等。

其他图表类型:

除了 UML,PlantUML 还支持其他图表类型,如 Gantt 图、架构图和网络图。

扩展性:

PlantUML 不仅仅局限于 UML。它还有一个扩展系统,允许添加新的图形类型。

开源和活跃的社区:

PlantUML 是完全开源的,有一个非常活跃的社区,不断增加新的功能和改进。

依赖 Graphviz:

为了生成图形,PlantUML 依赖于 Graphviz。这意味着用户需要安装两者才能完全使用 PlantUML。

总的来说,PlantUML 是一个强大的工具,特别适合那些希望使用文本描述来创建和维护 UML 图的开发人员和团队。

前置知识

PlantUML 是一个开源项目,可以让你使用简单易读的文本描述来创建 UML 图(包括类图、活动图、用例图、顺序图等)。以下是在学习 PlantUML 之前你可能需要了解的一些技术或软件:

Java Runtime Environment (JRE):PlantUML 是用 Java 编写的,因此需要 Java 运行环境来运行。Graphviz:PlantUML 使用 Graphviz 来布局生成的图像。因此,你需要安装 Graphviz 并确保它的可执行文件在你的系统路径中。文本编辑器:你可以在任何文本编辑器中编写 PlantUML 代码,但是有些编辑器(如 Visual Studio Code、IntelliJ IDEA 等)提供了对 PlantUML 的更好支持,例如语法高亮、实时预览等。PlantUML 语法:虽然 PlantUML 的语法相对简单,但是你可能还需要花一些时间来学习和熟悉它。UML 基础知识:虽然 PlantUML 可以帮助你更容易地创建 UML 图,但是你仍然需要对 UML 的基本概念有一定的理解,才能有效地使用 PlantUML。这包括理解类图、活动图、用例图、顺序图等各种 UML 图的语义和用法。

以上就是在学习 PlantUML 之前需要了解的一些技术和软件。希望这对你有所帮助。如果你有其他问题,欢迎继续提问。

学习计划

为了在一小时内有效地学习 PlantUML,我们需要制定一个结构化的学习计划。基于你已有的广泛技能和知识,我们可以设定一个实践目标:为一个简单的 Java Web 项目创建 UML 图。

目标: 为一个简单的 Java Web 项目(基于 Spring Boot 和 JPA)创建以下 UML 图:

类图序列图活动图

1小时学习计划

第1-10分钟:

快速安装和设置 PlantUML(假设你已经安装了 Graphviz)。使用你喜欢的文本编辑器(如 VSCode 或 IDEA)开始一个新的 PlantUML 文件。

第10-20分钟:

学习类图基础:创建简单的类、接口和枚举。添加属性和方法。设置类的可见性(public、private等)。

第20-30分钟:

为项目创建类图:创建一个基本的用户实体类。创建一个用户服务类。创建一个用户控制器类。使用 PlantUML 语法定义类之间的关系。

第30-40分钟:

学习序列图基础:创建参与者和对象。描述消息和方法调用的顺序。

第40-50分钟:

为项目创建序列图:模拟一个简单的用户登录场景。描述用户点击登录按钮后发生的一系列动作和方法调用。

第50-55分钟:

学习活动图基础:创建活动和决策。使用箭头描述活动之间的流程。

第55-60分钟:

为项目创建活动图:描述用户注册的流程,包括验证电子邮件、设置密码等。

作业(在1小时后):

使用 PlantUML 生成 UML 图的 PNG 或 SVG 版本,并在你的项目文档中嵌入它们。尝试使用不同的 PlantUML 主题和皮肤来改变 UML 图的外观。

资源:

使用 PlantUML 的官方文档。在线 PlantUML 编辑器,如 PlantText,可用于快速实验和预览。

这个学习计划的目的是通过实践和应用来加深对 PlantUML 的理解。在完成这个小时的学习后,你应该能够为你的项目创建基本的 UML 图。

安装和设置 PlantUML安装和设置 PlantUML

PlantUML 是一个用于生成 UML 图的工具,它从简单的纯文本描述中生成相应的图像。要在 Windows 上安装和设置 PlantUML,你可以按照以下步骤进行:

1. 安装 Java

由于 PlantUML 是基于 Java 开发的,所以首先需要安装 Java。你提到了你已经了解 Java 1.8 和 17,所以我假设 Java 已经安装。为了确认,请在命令行中输入:

bashCopy code java -version

这将显示你安装的 Java 版本。

2. 下载 PlantUML

访问 PlantUML 的官方下载页面:Release v1.2023.10 · plantuml/plantuml (github.com)从页面中下载 plantuml.jar 文件。

3. 设置 PlantUML

将下载的 plantuml.jar 文件移动到一个合适的位置,例如 C:\tools\plantuml\plantuml.jar。

创建一个批处理文件(例如 plantuml.bat)在同一个目录下,并添加以下内容:(地址需要改成自己的jar的路径)

@echo off java -jar "C:\tools\plantuml\plantuml.jar" %*

这个.bat文件是用于运行PlantUML的命令行工具的脚本。

具体来说,这个脚本执行以下操作:

@echo off:关闭命令行中的命令回显,即不在命令行窗口显示执行的命令。java -jar "C:\tools\plantuml\plantuml.jar" %*:运行Java虚拟机,并使用指定的jar文件(在此处是"C:\tools\plantuml\plantuml.jar")来执行PlantUML的命令行工具。%*表示将传递给脚本的所有参数传递给java命令,以便在PlantUML中使用。

因此,这个脚本允许你在命令行中执行PlantUML命令,使用PlantUML的命令行工具来处理UML图形文件。

将该目录(例如 C:\tools\plantuml)添加到系统的 PATH 变量中。这样你可以从任何位置直接运行 plantuml 命令。

4. 测试 PlantUML

创建一个名为 test.puml 的文件,并输入以下内容:

@startuml Alice -> Bob: Hello @enduml

保存文件并在命令行中运行以下命令:

plantuml test.puml

这将生成一个名为 test.png 的图像文件,其中包含 Alice 和 Bob 之间的消息图。

5. 注意

确保你已经安装了 Graphviz 并且其可执行文件(特别是 dot.exe)在你的 PATH 中,因为 PlantUML 依赖于 Graphviz 来生成某些 UML 图。

按照上述步骤,你应该可以在 Windows 上轻松安装和设置 PlantUML。

类图plantuml的类图基础

当然可以,下面是 PlantUML 类图的基础教程。

1. 创建简单的类、接口和枚举

在 PlantUML 中,你可以使用以下语法创建类、接口和枚举:

class ClassName interface InterfaceName enum EnumName

例如:

class Student interface Person enum Gender { MALE, FEMALE }

2. 添加属性和方法

你可以在类或接口中添加属性和方法,像这样:

class ClassName { + attribute1 : Type1 # attribute2 : Type2 - method1() : ReturnType1 + method2(param1:Type1, param2:Type2) : ReturnType2 }

其中 +、# 和 - 分别表示 public、protected 和 private 访问修饰符。

例如:

class Student { + studentID : int - name : string + enroll(course: Course) - calculateGrade() : Grade }

3. 设置类的可见性(public、private 等)

PlantUML 使用特定的符号表示不同的可见性级别:

+ : 公开 (public)- : 私有 (private)# : 受保护 (protected)~ : 包私有 (package private)

例如,下面的 Student 类有一个公开的属性 studentID 和一个私有的属性 name:

class Student { + studentID : int - name : string }

示例

结合以上的基础知识,以下是一个完整的 PlantUML 类图示例:

@startuml class Student { + studentID : int - name : string + enroll(course: Course) - calculateGrade() : Grade } interface Person { + getName() : string + getAge() : int } enum Gender { MALE, FEMALE } Student ..|> Person Student o-- Gender @enduml

这个示例展示了一个名为 Student 的类,它实现了 Person 接口并与 Gender 枚举有关联。

希望这些信息能帮助你入门 PlantUML 类图的创建!

Java Web 项目类图示例

首先,我们创建以下类:

UserEntity:这是一个实体类,代表了数据库中的用户。UserService:这是一个服务类,处理与用户相关的业务逻辑。UserController:这是一个控制器类,处理与用户相关的 HTTP 请求。

代码:

@startuml package "Entity" { class UserEntity { + userId : Long - username : String - password : String + UserEntity() + getUsername() : String + setUsername(username: String) + getPassword() : String + setPassword(password: String) } } package "Service" { class UserService { + createUser(user: UserEntity) : UserEntity + getUserById(id: Long) : UserEntity + updateUser(user: UserEntity) : UserEntity + deleteUser(id: Long) } } package "Controller" { class UserController { + createUser() + getUserById() + updateUser() + deleteUser() } } UserController --> UserService: uses UserService --> UserEntity: manages @enduml

在这个类图中,UserController 依赖于 UserService 来处理 HTTP 请求。同样地,UserService 也依赖于 UserEntity 来处理与用户相关的业务逻辑。

解释

UserEntity 类有三个属性:userId、username 和 password。此外,它还有对应的 getter 和 setter 方法。UserService 类提供了与用户相关的主要业务逻辑,如创建、获取、更新和删除用户。UserController 类处理与用户相关的 HTTP 请求。每个方法(如 createUser() 和 getUserById())都会对应一个特定的 HTTP 请求路径。序列图 plantuml 的序列图基础

序列图是用于表示对象之间消息传递的时间顺序的UML图。序列图特别适用于描述对象之间的交互以及交互的顺序。

1. 创建参与者和对象

在PlantUML中,你可以创建两种主要的参与者:actor和boundary。还有其他参与者,例如control、entity和database,但最常用的是前两者。

actor User boundary System

2. 描述消息和方法调用的顺序

消息是在两个参与者之间的箭头。你可以使用->来表示一个简单的消息。为了描述方法调用的返回,你可以使用--。

User -> System: request() System --> User: response()

完整的简单示例:

假设我们有一个用户尝试登录到系统的场景。用户输入他们的凭据,系统验证它们,并返回一个响应。

@startuml actor User boundary System User -> System: inputCredentials(username, password) System --> User: authenticationResponse(result) @enduml

在此示例中,用户(actor)发送一个inputCredentials消息给系统(boundary),系统经过一段时间后发送一个authenticationResponse消息回用户。

高级特性:

激活和去激活:你可以使用activate和deactivate关键字来表示一个参与者正在执行一个任务。

User -> System: inputCredentials(username, password) activate System System --> User: authenticationResponse(result) deactivate System

并行操作:你可以使用par和end关键字来表示并行操作。

par User -> System: task1() User -> System: task2() end

循环:你可以使用loop和end关键字来表示循环。

loop 3 times User -> System: repeatTask() end

条件:使用alt、else和end关键字来表示条件。

alt condition is true User -> System: action1() else condition is false User -> System: action2() end

希望这个简单的指南能帮助你开始使用PlantUML的序列图。这只是序列图的冰山一角,但它为你提供了开始的基础。

Java Web 序列图示例

让我们为基于Spring Boot和JPA的Java Web项目创建一个复杂一些的用户登录场景的序列图。

场景描述:

用户点击登录按钮。前端应用调用后端的LoginController。LoginController验证输入字段的完整性。LoginController调用UserService以验证用户凭据。UserService查询UserRepository以获取存储的用户详细信息。如果凭据匹配,UserService创建一个JWT令牌。LoginController返回响应给前端,响应可以是成功的JWT令牌或错误消息。

序列图代码:

@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 : loginUser(username, password) activate LC LC -> LC : validateInputs(username, password) note right: Check if inputs are empty or\n follow a certain pattern. LC -> US : verifyUserCredentials(username, password) activate US US -> UR : findByUsername(username) activate UR UR --> US : userData deactivate UR note over US : Compare input password\nwith stored password hash. US -> US : validatePassword(password, userData.passwordHash) US -> US : createJwtToken(username) note right : Create a JWT token for\nauthenticated user. US --> LC : jwtToken deactivate US LC --> FE : authenticationResponse(jwtToken/success or error message) deactivate LC deactivate FE @enduml

这个序列图描述了用户点击登录按钮后的一系列事件。它涉及到的组件包括前端应用、LoginController、UserService和UserRepository。每个组件的职责都在图中清晰地描述了出来。

你可以使用PlantUML渲染工具将上述代码转化为图形表示。这会给你一个详细的视图,描述了用户登录过程中涉及的各个组件和它们之间的交互。

活动图plantuml的活动图基础

PlantUML的活动图用于描述业务流程、算法或流程的操作序列。活动图主要关注条件和顺序的流程控制。

以下是创建活动图的一些基础概念:

开始和结束:每个活动图都有一个开始和一个结束。

@startuml start :Action 1; stop @enduml

活动:使用冒号表示一个活动。

:Activity 1;

条件/决策:使用if..else..endif表示决策。

if (condition) then (yes) :True activity; else (no) :False activity; endif

箭头:箭头用于表示活动之间的流程。你可以使用-->或->表示一个流向。

:Activity 1; --> :Activity 2;

并行活动:使用fork和endfork表示并行的活动。

fork :First Activity; :Second Activity; endfork

循环:使用while和endwhile表示循环。

while (condition) is (yes) :Repeated Activity; endwhile (no)

分组和注释:可以使用note表示注释,group表示一个活动组。

group My Group :Activity 1; note right: This is a note on the right. end group

结束:每个活动图都应该有一个结束,表示流程结束的地方。

stop

示例:

考虑一个简单的在线购买流程,我们可以使用活动图来表示这个过程:

@startuml start :Browse Products; :Select Product; if (Is product available?) then (yes) :Add to Cart; if (Want to checkout?) then (yes) :Proceed to Checkout; :Enter Payment Details; if (Payment Successful?) then (yes) :Order Confirmation; stop else (no) :Payment Failed; stop endif else (no) :Continue Shopping; stop endif else (no) :Product Out of Stock; stop endif @enduml

上述代码描述了在线购买的流程,从浏览产品到选择产品、添加到购物车,然后结账或继续购物。如果产品没有库存,或者付款失败,流程会提前结束。

用户注册流程的活动图示例

下面是一个用户注册流程的活动图:

用户开始注册。用户输入基本信息,如电子邮件、用户名等。系统验证电子邮件的格式是否正确。系统检查电子邮件是否已被其他用户使用。用户设置密码。系统验证密码的强度。用户确认密码。系统验证两次输入的密码是否一致。用户点击注册。系统发送电子邮件验证链接。用户点击链接确认电子邮件。注册成功。

以下是对应的PlantUML活动图代码:

@startuml start :User starts registration; :Enter email and username; if (Is email format valid?) then (yes) if (Is email unique?) then (yes) :Enter password; if (Is password strong?) then (yes) :Confirm password; if (Are passwords matching?) then (yes) :Click register; :System sends email verification link; if (Is email link clicked?) then (yes) :Registration successful; stop else (no) :Registration failed; stop endif else (no) :Passwords do not match; stop endif else (no) :Weak password; stop endif else (no) :Email already in use; stop endif else (no) :Invalid email format; stop endif @enduml



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有