PlantUML 入门使用指南

PlantUML 入门使用指南

  • 一、PlantUML介绍
  • 二、PlantUML的用途
  • 三、PlantUML的语法及示例
    • [3.1 用例图(Use Case Diagram)](#3.1 用例图(Use Case Diagram))
    • [3.2 类图(Class Diagram)](#3.2 类图(Class Diagram))
    • [3.3 对象图(Object Diagram)](#3.3 对象图(Object Diagram))
    • [3.4 序列图(Sequence Diagram)](#3.4 序列图(Sequence Diagram))
    • [3.5 活动图(Activity Diagram)](#3.5 活动图(Activity Diagram))
    • [3.6 状态图(State Diagram)](#3.6 状态图(State Diagram))
    • [3.7 组件图(Component Diagram)](#3.7 组件图(Component Diagram))
    • [3.8 部署图(Deployment 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:定义一个用例。
  • -->:表示参与者与用例之间的关联。

示例:

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

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

3.2 类图(Class Diagram)

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

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

示例:

plaintext 复制代码
@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)

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

示例:

plaintext 复制代码
@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:定义一个参与者,可以是对象或类。
  • ->:表示一个消息或调用。

示例:

plaintext 复制代码
@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:条件分支。

示例:

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

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

3.6 状态图(State Diagram)

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

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

示例:

plaintext 复制代码
@startuml
[*] --> Active
Active --> [*] : Terminate
Active --> Idle : idle
Idle --> Active : activate
@enduml

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

3.7 组件图(Component Diagram)

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

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

示例:

plaintext 复制代码
@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:定义一个部署在节点上的工件。

示例:

plaintext 复制代码
@startuml
node "Web Server" {
  artifact Server
}

node "Database Server" {
  artifact Database
}

Server --> Database : connects to
@enduml

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

四、PlantUML的使用

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

bash 复制代码
java -jar plantuml.jar -charset UTF-8 -gui your_diagram.puml

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

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

相关推荐
吴声子夜歌12 小时前
PlantUML——类图(一)
uml
吴声子夜歌13 小时前
PlantUML——类图(二)
uml·plantuml·类图
吴声子夜歌16 小时前
PlantUML——对象图
uml·plantuml·对象图
吴声子夜歌2 天前
PlantUML——用例图
uml·plantuml
rolt4 天前
PlantUML描述《分析模式》第4章企业财务观察(1)
产品经理·架构师·uml·系统工程
KobeSacre5 天前
UML 学习
学习·uml
hssfscv7 天前
软件设计师2021上、下上午题错题解析+2022上、下下午题训练5道 练习真题训练16
笔记·设计模式·uml
_codemonster8 天前
UML静态图之构件图(也叫组件图)详解
uml
_codemonster12 天前
UML静态图之类图详解
uml
深念Y13 天前
我在 Trae 里用 UML-mcp-renderer 画图,发现了 MCP 跟 CLI+Skills 的区别
agent·uml·cli·幻觉·mcp·trae·skills