Документация / 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 г.
