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文件和渲染成图片,更加直观和方便。

相关推荐
光头颜1 小时前
UML之发现用例
软件工程·uml·软件设计·ooad
A_New_World2 天前
UML类图示例-CPP
uml
rolt2 天前
用户界面的UML建模07
uml·交互设计
rolt3 天前
用户界面的UML建模08
架构师·uml
Just_Paranoid6 天前
UML(统一建模语言)及其图例使用指南
uml·建模·类图·用例图·序列图
geocat6 天前
plantuml的picoweb无法渲染分页图表的问题
vscode·plantuml
Dotrust东信创智6 天前
基于PREEvision的UML设计
uml
光头颜7 天前
UML之关联
软件工程·uml·软件设计·ooad
rolt7 天前
[pdf、epub]260道《软件方法》强化自测题业务建模需求分析共216页(202412更新)
ddd·需求分析·架构师·uml·领域驱动设计