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的用途非常广泛,它在软件开发的各个阶段都能发挥作用:
- 软件设计:在软件开发的早期阶段,使用PlantUML可以快速创建和修改类图、序列图等,帮助开发者更好地理解和沟通系统设计。
- 文档编写:PlantUML可以用来生成各种图表,帮助文档编写者更清晰地表达复杂的概念和流程。
- 教学和演示:教师和培训师可以使用PlantUML创建图表来辅助教学,使学生更容易理解抽象的概念。
- 项目管理和沟通:项目经理可以使用PlantUML创建用例图和活动图,以便于与非技术团队成员沟通项目需求和流程。
- 数据库设计: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
在这个示例中,定义了Customer
和Order
两个类,以及它们之间的关系。
3.3 对象图(Object Diagram)
对象图是类图的实例,展示了具体对象及其关系。语法与类图类似,但使用对象名代替类名。
示例:
@startuml
object customer1 {
-name = "John Doe"
-email = "john.doe@example.com"
}
object order1 {
-orderNumber = 123
}
customer1 -> order1 : places
@enduml
这个示例中,定义了两个具体的对象customer1
和order1
,以及它们之间的关系。
3.4 序列图(Sequence Diagram)
序列图展示了对象间的交互顺序。语法包括:
participant
:定义一个参与者,可以是对象或类。->
:表示一个消息或调用。
示例:
@startuml
participant Client
participant Controller
participant Service
Client -> Controller: Request
Controller -> Service: Process
Service -> Client: Response
@enduml
这个示例中,定义了三个参与者Client
、Controller
和Service
,以及它们之间的交互。
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
这个示例中,定义了对象的状态Active
和Idle
,以及它们之间的转换。
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 Component
和Second Component
,以及它们之间的依赖关系。
3.8 部署图(Deployment Diagram)
部署图展示了系统的物理部署,包括硬件和软件的分布。语法包括:
node
:定义一个节点,如服务器或设备。artifact
:定义一个部署在节点上的工件。
示例:
@startuml
node "Web Server" {
artifact Server
}
node "Database Server" {
artifact Database
}
Server --> Database : connects to
@enduml
这个示例中,定义了两个节点Web Server
和Database Server
,以及它们之间的连接关系。
四、PlantUML的使用
可以使用PlantUML的命令行工具或者IDE插件来渲染这个序列图。在命令行中,你可以使用如下命令:
java -jar plantuml.jar -charset UTF-8 -gui your_diagram.puml
这将打开一个GUI窗口,显示你的图表,并允许你保存为图片格式,如PNG或SVG。
在 Android Studio 或其他 IDE 软件中可以下载插件 PlantUML Integration
,此插件可以直接新建puml
文件和渲染成图片,更加直观和方便。