Диаграмма классов показывает сущности, их атрибуты и связи — модель предметной области, структуру API или доменных объектов. В PlantUML её удобно вести рядом с кодом и спецификациями.
Пример
@startuml
class Order {
+ id : UUID
+ status : OrderStatus
+ total() : Money
}
class OrderLine {
+ quantity : int
+ price : Money
}
enum OrderStatus {
NEW
PAID
SHIPPED
}
Order "1" *-- "1..*" OrderLine : lines
Order --> OrderStatus
@enduml
Откройте в песочнице или возьмите шаблон: Файл → Примеры → Диаграмма классов.

Связи
| Код | Связь |
|---|---|
A <|-- B | наследование: B — наследник A |
A <|.. B | реализация интерфейса |
A *-- B | композиция: B не существует без A |
A o-- B | агрегация |
A --> B | ассоциация (направленная) |
A ..> B | зависимость |
Кратность пишется в кавычках у концов связи: "1" *-- "0..*", подпись — после двоеточия.
Члены класса
- Видимость:
+public,-private,#protected,~package. - Методы отличаются скобками:
total() : Money. {static}и{abstract}— модификаторы;abstract class,interface,enum— виды классов.
Оформление
package "Платежи" { … }— группировка.hide empty members— скрыть пустые разделы,hide circle— значки классов.left to right direction— горизонтальная раскладка.
Диаграмма из готовой спецификации
Если модель уже описана в OpenAPI, диаграмму классов можно получить автоматически — «OpenAPI в диаграмму классов PlantUML».
Вопросы и ответы
Как убрать методы и оставить только атрибуты? hide methods скрывает методы у всех классов, hide empty members — только пустые разделы.
Можно ли показать связь «многие-ко-многим»? Да: Order "*" -- "*" Tag. Если у связи есть атрибуты, используйте класс-ассоциацию: (Order, Tag) .. OrderTag.
Чем диаграмма классов отличается от ER-диаграммы? ER-диаграмма описывает таблицы и ключи базы, диаграмма классов — объекты и их поведение. Для модели БД удобнее DBML.
