Справочник / Диаграмма классов UML
Диаграмма классов UML: синтаксис и примеры
Классы, атрибуты, операции и связи между ними. Диаграмма находится между @startuml и @enduml. Класс объявляется словом class, имя в кавычках можно писать по-русски, а через as задаётся короткий псевдоним для связей.
Пример
@startuml
class "Пользователь" as User {
- id : UUID
- email : String
+ login(password : String) : bool
}
class "Заказ" as Order {
- number : int
- createdAt : Date
+ total() : float
}
class "Позиция заказа" as Item {
- quantity : int
- price : float
}
interface "Оплата" as Payment {
+ pay(amount : float) : bool
}
abstract class "Скидка" as Discount {
{abstract} + apply(sum : float) : float
}
class "Процентная скидка" as Percent {
- percent : int
}
User "1" --> "0..*" Order : оформляет >
Order "1" *-- "1..*" Item : содержит
Order ..> Payment : <<use>>
Order o-- "0..1" Discount
Discount <|-- Percent
@endumlГотовые примеры
- Диаграмма классов интернет-магазинаПример UML-диаграммы классов для интернет-магазина
- Диаграмма классов библиотекиUML-диаграмма классов для информационной системы библиотеки
Конструкции
Класс с атрибутами и операциями
Атрибут: видимость, имя, двоеточие, тип. Операция: имя, параметры в скобках, тип результата.
class "Пользователь" as User {
- id : UUID
+ login(pwd : String) : bool
}Абстрактный класс и операция
Абстрактные элементы выводятся курсивом.
abstract class "Фигура" as Shape {
{abstract} + area() : float
}Статический член
Статические элементы подчёркиваются.
class Counter {
{static} - count : int
}Интерфейс
interface "Оплата" as Payment {
+ pay(sum : float) : bool
}Перечисление
enum Status {
NEW
PAID
DONE
}Стереотип
class Repo <<repository>>
Кратность и подпись
Кратности в кавычках у концов связи; > или < после подписи показывает направление чтения.
User "1" --> "0..*" Order : оформляет >
Пакет
package "Модели" {
class A
class B
}
Связи UML
| A <|-- B | обобщение: B наследует A |
| A <|.. B | реализация: B реализует интерфейс A |
| A *-- B | композиция: B — неотъемлемая часть A |
| A o-- B | агрегация |
| A --> B | направленная ассоциация |
| A -- B | ассоциация |
| A ..> B | зависимость |
Видимость
| + | public |
| - | private |
| # | protected |
| ~ | package |
Общее
| @startuml / @enduml | начало и конец диаграммы |
| ' текст | комментарий |
| /' … '/ | многострочный комментарий |
| title Заголовок | заголовок над диаграммой |
| left to right direction | раскладка слева направо |
Другие виды диаграмм
- Диаграмма объектов UMLЭкземпляры классов и их значения в момент времени
- Диаграмма пакетов UMLПакеты (модули) системы и зависимости между ними
- Диаграмма компонентов UMLКомпоненты, интерфейсы и зависимости
- Диаграмма развёртывания UMLУзлы, среды выполнения и артефакты на них
- ER-диаграмма (сущность–связь)Таблицы, ключи и кратность связей (нотация IE)
- Диаграмма прецедентов UMLАктёры и варианты использования системы
- Диаграмма последовательностей UMLОбмен сообщениями между участниками во времени
- Диаграмма деятельности UMLДействия, решения, параллельные ветки и дорожки
- Диаграмма состояний UMLЖизненный цикл объекта и переходы
- Временная диаграмма UML (timing)Изменение состояний участников во времени
- Диаграмма ГантаПлан работ по дням с зависимостями и вехами
- Интеллект-карта (mind map)Идеи вокруг одной темы
- WBS — структура декомпозиции работДекомпозиция проекта на пакеты работ
- Сетевая диаграмма (nwdiag)Сети, адреса и подключённые к ним серверы
- Визуализация JSONСтруктура JSON-документа в виде дерева