PlantUML简介
PlantUML 是一个开源的工具,允许我们这样的懒狗使用简单直观的文本语言来创建 UML 图。虽然它支持多种类型的图表(如时序图、用例图、活动图等),但今天我们主要关注最常用的类图(Class Diagram)语法。
为什么选择PlantUML画类图?
- 文本化描述 - 不用拖拽,直接用代码描述类的关系
- 版本控制友好 - 可以直接纳入Git管理
- 快速修改 - 不用担心调整布局,PlantUML会自动处理
- 标准化输出 - 团队内部风格统一
类图基本语法
1. 定义一个类
text
@startuml
class User {
-String name
-int age
+void login()
+void logout()
}
@enduml
语法说明:
- 使用
class关键字定义类 - 属性前使用
-表示private,+表示public,#表示protected - 方法的完整语法是:
可见性 返回类型 方法名(参数列表)
2. 类之间的关系
text
@startuml
class Animal {
+void eat()
}
class Dog {
+void bark()
}
class Cat {
+void meow()
}
Animal <|-- Dog
Animal <|-- Cat
@enduml
常用关系符号:
- 继承关系:
<|-- - 实现接口:
<|.. - 组合关系:
*-- - 聚合关系:
o-- - 关联关系:
--> - 依赖关系:
..>
3. 接口和抽象类
text
@startuml
interface Playable {
+void play()
+void stop()
}
abstract class Instrument {
-String name
+{abstract} void makeSound()
}
class Piano {
+void makeSound()
}
Playable <|.. Piano
Instrument <|-- Piano
@enduml
语法说明:
- 使用
interface定义接口 - 使用
abstract class定义抽象类 - 抽象方法可以用
{abstract}标记
4. 关系的多重性
text
@startuml
class University {
+String name
}
class Student {
+String id
+String name
}
class Course {
+String code
+String title
}
University "1" *-- "many" Student
Student "many" -- "many" Course
@enduml
多重性表示:
- “1” 表示一个
- “*” 或 “many” 表示多个
- “0..1” 表示零个或一个
- “1..*” 表示一个或多个
5. 高级特性
text
@startuml
package "用户管理" {
class User {
-String username
-String password
+void login()
}
class UserProfile {
-String email
-String phone
}
}
package "权限管理" {
class Role {
-String name
+void grant()
}
class Permission {
-String code
-String description
}
}
User "1" -- "1" UserProfile
User "*" -- "*" Role
Role "*" -- "*" Permission
@enduml
高级特性说明:
- 使用
package对类进行分组 - 可以使用
namespace定义命名空间 - 可以使用
note left of、note right of、note top of添加注释
实用技巧
- 布局控制
text
@startuml
left to right direction
class A
class B
class C
A -- B
B -- C
@enduml- 样式定制
text
@startuml
skinparam classAttributeIconSize 0
skinparam class {
BackgroundColor White
ArrowColor Black
BorderColor Black
}
class Example
@enduml结语
以上就是PlantUML类图的主要语法,掌握这些基础语法就能画出清晰的类图了。记住一点:类图的重点是表达类之间的关系,不要过分关注图的样式,PlantUML会帮我们处理好布局问题。
[图片说明:以上代码块中标注需要放置图片的位置,您可以使用PlantUML生成对应的图片后放置在那些位置]

评论
Discussion · 0登录后参与讨论 · Sign in to join the discussion
用 GitHub 账号登录,就可以评论、回复和点赞。
使用 GitHub 登录还没有评论 · 来写下第一条吧。