当前位置: 首页 > article >正文

PlantUML 入门使用指南

PlantUML 入门使用指南

  • 一、PlantUML介绍
  • 二、PlantUML的用途
  • 三、PlantUML的语法及示例
    • 3.1 用例图(Use Case Diagram)
    • 3.2 类图(Class Diagram)
    • 3.3 对象图(Object Diagram)
    • 3.4 序列图(Sequence Diagram)
    • 3.5 活动图(Activity Diagram)
    • 3.6 状态图(State Diagram)
    • 3.7 组件图(Component Diagram)
    • 3.8 部署图(Deployment Diagram)
  • 四、PlantUML的使用

一、PlantUML介绍

PlantUML是一个开源工具,它允许用户通过简单的文本描述来创建UML图(统一建模语言图)。这种方法的优点在于它能快速绘制出结构图,如序列图、用例图、类图、活动图、组件图、状态图等,非常适合在文档或代码注释中快速表达设计思路。PlantUML主要使用基于文本的描述语言,我们可以在任何文本编辑器中编写你的UML图描述,然后用PlantUML工具将其转换成图形表示。

PlantUML 文档:https://plantuml.com/zh/
在线服务器:https://www.plantuml.com/plantuml
PlantUML 语言参考指南:https://plantuml.com/zh/guide

二、PlantUML的用途

PlantUML的用途非常广泛,它在软件开发的各个阶段都能发挥作用:

  1. 软件设计:在软件开发的早期阶段,使用PlantUML可以快速创建和修改类图、序列图等,帮助开发者更好地理解和沟通系统设计。
  2. 文档编写:PlantUML可以用来生成各种图表,帮助文档编写者更清晰地表达复杂的概念和流程。
  3. 教学和演示:教师和培训师可以使用PlantUML创建图表来辅助教学,使学生更容易理解抽象的概念。
  4. 项目管理和沟通:项目经理可以使用PlantUML创建用例图和活动图,以便于与非技术团队成员沟通项目需求和流程。
  5. 数据库设计:PlantUML可以用来创建数据库模型图,帮助数据库设计者可视化数据结构。

三、PlantUML的语法及示例

PlantUML的语法简单直观,类似于编程语言,以下是一些基本的语法规则和常用图例的语法。

3.1 用例图(Use Case Diagram)

用例图展示了系统的功能以及与外部用户的交互。语法包括:

  • actor:定义一个参与者。
  • usecase:定义一个用例。
  • -->:表示参与者与用例之间的关联。

示例:

@startuml
left to right direction
actor 客户
rectangle 银行系统 {
  (取款) .> (ATM)
  (存款) .> (柜台)
  (查询余额) .> (网上银行)
}
@enduml

这个示例中,定义了一个客户参与者和三个用例:取款存款查询余额,以及它们与银行系统的关系。

3.2 类图(Class Diagram)

类图展示了系统的静态结构,包括类、属性、方法和类之间的关系。语法包括:

  • class:定义一个类。
  • ---:定义类之间的关系,如关联、依赖等。

示例:

@startuml
class Customer {
  - name : String
  - email : String
  + placeOrder() : Order
}
class Order {
  - orderNumber : Integer
  + getDetails() : String
}
Customer "1" -- "1..*" Order : places
@enduml

在这个示例中,定义了CustomerOrder两个类,以及它们之间的关系。

3.3 对象图(Object Diagram)

对象图是类图的实例,展示了具体对象及其关系。语法与类图类似,但使用对象名代替类名。

示例:

@startuml
object customer1 {
  -name = "John Doe"
  -email = "john.doe@example.com"
}

object order1 {
  -orderNumber = 123
}

customer1 -> order1 : places
@enduml

这个示例中,定义了两个具体的对象customer1order1,以及它们之间的关系。

3.4 序列图(Sequence Diagram)

序列图展示了对象间的交互顺序。语法包括:

  • participant:定义一个参与者,可以是对象或类。
  • ->:表示一个消息或调用。

示例:

@startuml
participant Client
participant Controller
participant Service
Client -> Controller: Request
Controller -> Service: Process
Service -> Client: Response
@enduml

这个示例中,定义了三个参与者ClientControllerService,以及它们之间的交互。

3.5 活动图(Activity Diagram)

活动图展示了业务流程或操作步骤。语法包括:

  • start:开始节点。
  • stop:结束节点。
  • if:条件分支。

示例:

@startuml
start
:Login;
if (isUserAuthenticated?) then (yes)
  :Show Dashboard;
else (no)
  :Show Login Form;
endif
:User logs out;
stop
@enduml

这个示例中,定义了一个登录流程,包括用户认证和登录表单显示。

3.6 状态图(State Diagram)

状态图展示了对象状态的变化。语法包括:

  • [*]:开始状态。
  • -->:状态转换。

示例:

@startuml
[*] --> Active
Active --> [*] : Terminate
Active --> Idle : idle
Idle --> Active : activate
@enduml

这个示例中,定义了对象的状态ActiveIdle,以及它们之间的转换。

3.7 组件图(Component Diagram)

组件图展示了系统的物理组件和它们之间的关系。语法包括:

  • package:定义一个包或组件。
  • ---:定义组件之间的关系。

示例:

@startuml
package "First Component" {
  [First Component] as A
}

package "Second Component" {
  [Second Component] as B
}

A --> B : dependency
@enduml

这个示例中,定义了两个组件First ComponentSecond Component,以及它们之间的依赖关系。

3.8 部署图(Deployment Diagram)

部署图展示了系统的物理部署,包括硬件和软件的分布。语法包括:

  • node:定义一个节点,如服务器或设备。
  • artifact:定义一个部署在节点上的工件。

示例:

@startuml
node "Web Server" {
  artifact Server
}

node "Database Server" {
  artifact Database
}

Server --> Database : connects to
@enduml

这个示例中,定义了两个节点Web ServerDatabase Server,以及它们之间的连接关系。

四、PlantUML的使用

可以使用PlantUML的命令行工具或者IDE插件来渲染这个序列图。在命令行中,你可以使用如下命令:

java -jar plantuml.jar -charset UTF-8 -gui your_diagram.puml

这将打开一个GUI窗口,显示你的图表,并允许你保存为图片格式,如PNG或SVG。

在 Android Studio 或其他 IDE 软件中可以下载插件 PlantUML Integration ,此插件可以直接新建puml文件和渲染成图片,更加直观和方便。


http://www.kler.cn/a/454809.html

相关文章:

  • 【Linux 系统负载详情解析】
  • C#控件开发3—文本显示、文本设值
  • Markdown语法字体字号讲解
  • ESP-NETIF L2 TAP 接口-物联网嵌入式开发应用
  • 单例模式懒汉式、饿汉式(线程安全)
  • 使用 pyreqs 快速创建 requirements.txt PyCharm 中 UnicodeDecodeError 问题
  • Llama 3 后训练(三)
  • 逻辑控制语句
  • 【Unity3D】ECS入门学习(六)状态组件 ISystemStateComponentData
  • fisco-bcos手动部署区块链浏览器
  • 【Leetcode】3159. 查询数组中元素的出现位置
  • 顶会评测集解读-AlignBench: 大语言模型中文对齐基准
  • 什么是Top-p采样与Top-k采样?大模型推理时如何同时设置?解析Transformers库源代码
  • 智能合约在Web3中的作用:去中心化应用的基石
  • 探寻 OneCode 核心优势:MVVM 进阶与前后端协同之魅
  • HTML5 开发工具与调试
  • Kubernetes 的资源管理方式
  • 【Java 代码审计入门-02】SQL 漏洞原理与实际案例介绍
  • 负载均衡式在线OJ系统测试报告(Jmeter性能测试、Selenium自动化测试脚本)
  • 嵌入式单片机模数转换控制与实现详解
  • JS 设置按钮的loading效果
  • 开源 SOAP over UDP
  • OpenCV相机标定与3D重建(35)计算两幅图像之间本质矩阵(Essential Matrix)的函数findEssentialMat()的使用
  • Django框架:构建高效Web应用的强大工具
  • Bash语言的语法
  • CSS(四)display和float