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

相关推荐
rolt3 天前
利用AI识别损毁程度是愿景吗《软件方法》第2章
产品经理·需求分析·uml
rolt3 天前
[pdf]《软件方法》全流程引领AI-电子书共435页202601更新
产品经理·ddd·架构师·uml·领域驱动设计
:mnong3 天前
跟着《软件需求分析和设计实践指南》成长
学习·需求分析·uml·软件需求
JaredYe4 天前
node-plantuml-2:革命性的纯Node.js PlantUML渲染器,告别Java依赖!
java·开发语言·node.js·uml·plantuml·jre
LDtPLYZgoAu5 天前
在LABVIEW中调用Bartender API子程序:探索自动化标签打印新旅程
uml
Warren2Lynch6 天前
利用 AI 协作优化软件更新逻辑:构建清晰的 UML 顺序图指南
人工智能·uml
rolt10 天前
软件需求设计方法学全程实例剖析幻灯片04-系统用例图和用例规约[202601更新]
产品经理·需求分析·uml
workflower14 天前
和测试角色相关的问题
软件工程·软件构建·开源软件·uml·软件需求
rolt15 天前
软件需求设计方法学全程实例剖析幻灯片02-愿景[202512更新]
产品经理·需求分析·架构师·uml
rolt15 天前
软件需求设计方法学全程实例剖析幻灯片03-业务用例图和业务序列图[202601更新]
产品经理·需求分析·uml