← Все гайды

Диаграмма классов в PlantUML: модель данных и связи

· 2 мин чтения

PlantUML

Как описать модель предметной области диаграммой классов PlantUML: поля и методы, видимость, наследование, композиция и агрегация, кратность, перечисления и пакеты.

Диаграмма классов показывает сущности, их атрибуты и связи — модель предметной области, структуру 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

Откройте в песочнице или возьмите шаблон: Файл → Примеры → Диаграмма классов.

Диаграмма классов заказа в PlantUML
Классы, перечисление и композиция с кратностью

Связи

КодСвязь
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.