Документация / PlantUML

Диаграммы классов

Диаграмма классов описывает структуру: классы и интерфейсы, их атрибуты и методы и связи между ними.

Классы и их члены

Члены класса перечисляются в фигурных скобках. Методы определяются по круглым скобкам (), всё остальное считается атрибутами. Видимость задаётся первым символом.

@startuml
class Order {
  +id: UUID
  -status: OrderStatus
  #createdAt: DateTime
  ~internalNote: String
  +total(): Money
  +pay(card: Card): Payment
  {static} +create(cart: Cart): Order
  {abstract} +validate(): void
}
@enduml
СимволВидимость
+public
-private
#protected
~package (внутри пакета)

Модификаторы {static} и {abstract} пишутся перед членом. Разделители внутри класса: --, .., ==, __ (с подписью: -- Методы --).

Виды классификаторов

@startuml
abstract class Shape
interface Drawable
enum Color {
  RED
  GREEN
  BLUE
}
annotation Entity
class "List<T>" as List
struct Point
exception NotFoundException
@enduml

Связи

СтрелкаСвязь
A <|-- Bнаследование (B наследует A)
A <|.. Bреализация интерфейса
A *-- Bкомпозиция (B — часть A и не живёт без него)
A o-- Bагрегация
A --> Bнаправленная ассоциация
A -- Bассоциация
A ..> Bзависимость

Кратности пишутся в кавычках у концов связи, подпись — после двоеточия; символ > или < в подписи показывает направление чтения.

@startuml
interface Payable {
  +pay(): Payment
}
abstract class Document
class Order
class OrderItem
class Customer
class Product

Document <|-- Order
Payable <|.. Order
Order "1" *-- "1..*" OrderItem : содержит >
Customer "1" o-- "0..*" Order : оформляет
OrderItem --> Product
Order ..> Payment : создаёт
@enduml

Пакеты и пространства имён

@startuml
package "Заказы" {
  class Order
  class OrderItem
}
package "Оплата" #EEF3FA {
  class Payment
}
Order --> Payment
@enduml

Стиль пакета можно выбрать: package X <<Folder>>, <<Frame>>, <<Cloud>>, <<Database>>, <<Rectangle>>.

Стереотипы, обобщения и заметки

@startuml
class Repository<T> <<interface>>
class OrderRepository <<Spring>> {
  +findByStatus(s: Status): List<Order>
}
Repository <|.. OrderRepository
note right of OrderRepository::findByStatus
  Индекс по status
end note
note "Слой доступа к данным" as N
OrderRepository .. N
@enduml

Скрытие и показ элементов

@startuml
hide empty members
hide circle
skinparam classAttributeIconSize 0
class Order {
  id: UUID
}
class Tag
Order --> Tag
@enduml
  • hide empty members — не рисовать пустые разделы;
  • hide circle — убрать значок-кружок у классов;
  • hide methods, hide attributes, hide <<Stereotype>> — скрыть члены или классы со стереотипом;
  • skinparam classAttributeIconSize 0 — видимость символами вместо значков.

Направление раскладки

@startuml
left to right direction
class A
class B
class C
A --> B
B --> C
@enduml

Обновлено: 30 сентября 2026 г.