PlantUML 类图语法教程 - 边学边练
PlantUML 是一个开源工具,使用简单的文本描述来绘制 UML 图。本教程采用"边学边练"的方式,每个知识点都配有可交互的练习环节。
在开始学习之前,请先打开我们的 UML 在线编辑器,这样你可以一边学习一边练习。
提示:PlantUML 需要服务器端渲染,点击"开始练习"按钮后,代码会自动加载到编辑器中!
第一课:定义一个简单的类
在 PlantUML 中,使用 @startuml 和 @enduml 包裹图表内容:
@startuml
class Animal {
+String name
+int age
+void eat()
}
@enduml
代码解析:
- @startuml 和 @enduml:图表的开始和结束标记
- class Animal:定义一个名为 Animal 的类
- +String name:公有属性,+ 表示 public
练习任务:
1. 点击"开始练习"按钮
2. 观察生成的类图
3. 尝试添加一个新方法 +void sleep()
第二课:理解可见性符号
类成员的可见性通过符号表示:
| 符号 | 名称 | 说明 |
|---|---|---|
- |
Private | 只有类内部可以访问 |
# |
Protected | 类及其子类可以访问 |
~ |
Package | 同一包内的类可以访问 |
+ |
Public | 任何地方都可以访问 |
示例代码:
@startuml
class BankAccount {
-double balance
#String accountNumber
~String bankName
+void deposit(double amount)
+double getBalance()
-void validateTransaction()
}
@enduml
练习任务:
1. 加载代码并观察不同可见性
2. 尝试修改可见性符号
第三课:类继承关系
使用 <|-- 表示继承关系:
@startuml
skinparam monochrome true
class Animal {
+String name
+int age
+void eat()
}
class Dog {
+String breed
+void bark()
}
class Cat {
-int lives
+void meow()
}
Animal <|-- Dog : 继承
Animal <|-- Cat : 继承
@enduml
练习任务:
1. 加载代码并观察继承关系
2. 添加一个新的类 Bird 继承自 Animal
第四课:接口和抽象类
接口定义:
@startuml
interface IShape {
+double area()
+double perimeter()
}
class Circle {
+double radius
+double area()
+double perimeter()
}
Circle ..|> IShape
@enduml
练习任务:
1. 加载代码并观察接口实现
2. 添加一个新的类 Rectangle 实现接口
抽象类定义:
@startuml
abstract class Shape {
+String color
+abstract double area()
}
class Rectangle {
+double width
+double height
+double area()
}
Rectangle --|> Shape
@enduml
练习任务:
1. 加载代码并观察抽象类
2. 添加一个新的具体类 Circle 继承自 Shape
第五课:添加注释
使用 note 添加注释:
@startuml
class Animal {
+String name
}
note right of Animal : 这是所有动物的基类
class Dog {
+String breed
}
note left of Dog : 狗类
@enduml
练习任务:
1. 加载代码并观察注释显示
2. 尝试添加更多注释
第六课:包和命名空间
@startuml
package "Animals" {
class Animal {
+String name
}
class Dog {
+void bark()
}
}
package "Plants" {
class Tree {
+int height
}
}
Animal <|-- Dog
@enduml
练习任务:
1. 加载代码并观察包结构
2. 添加一个新的包 Vehicles
第七课:样式设置
使用主题:
@startuml
skinparam monochrome true
class Animal {
+String name
}
@enduml
练习任务:
1. 加载代码并观察黑白主题
2. 尝试移除 skinparam monochrome true 看看效果
实战练习:设计模式
观察者模式
@startuml
interface IObserver {
+void update()
}
class Subject {
-List observers
+void attach(IObserver observer)
+void detach(IObserver observer)
+void notify()
}
class ConcreteObserver {
+void update()
}
Subject "1" --> "n" IObserver : observes
ConcreteObserver ..|> IObserver
@enduml
练习任务:
1. 加载代码并理解观察者模式
2. 添加一个新的具体观察者类
策略模式
@startuml
interface Strategy {
+void execute()
}
class ConcreteStrategyA {
+void execute()
}
class ConcreteStrategyB {
+void execute()
}
class Context {
-Strategy strategy
+void setStrategy(Strategy strategy)
+void performAction()
}
Context --> Strategy : uses
ConcreteStrategyA ..|> Strategy
ConcreteStrategyB ..|> Strategy
@enduml
练习任务:
1. 加载代码并理解策略模式
2. 添加一个新的策略类
学习总结
恭喜你完成了 PlantUML 类图的学习!现在你已经掌握了:
- 类定义和成员可见性
- 各种类关系(继承、组合、聚合等)
- 接口和抽象类
- 注释、包和命名空间
- 样式设置
- 设计模式应用
下一步:
- 在 UML 在线编辑器 中创建自己的类图
- 学习更多 PlantUML 图表类型(时序图、用例图等)
- 参考 PlantUML 官方文档
本文由 yanleaf.com 提供,转载请注明出处。
评论区