PlantUML 类图语法教程

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 提供,转载请注明出处。

作者: yanleaf 发布时间: 2026-04-14 22:39:12 阅读数: 159 点赞数: 0 评论数:

评论区

备案期间,评论功能暂时关闭。