Карта / UML-диаграммы / Диаграмма классов

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

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

┌─────────────────┐
│      Order       │
├─────────────────┤
│ - id: int          │
│ - items: List      │
├─────────────────┤
│ + calculateTotal() │
└─────────────────┘

         │ содержит

┌─────────────────┐
│       Item        │
└─────────────────┘

Три секции прямоугольника: имя класса, поля (- private, + public), методы. Стрелки между классами показывают тип связи.

Копнуть глубже

Основные типы связей и как их рисовать:

СвязьСтрелкаСмысл
Наследование▷─── (треугольник, сплошная)Dog extends Animal
Реализация интерфейса▷┄┄┄ (треугольник, пунктир)Dog implements Movable
Композиция♦─── (закрашенный ромб)Order содержит Item, без Order нет смысла в Item
Агрегация◇─── (пустой ромб)Team содержит Player, но Player может существовать отдельно
Зависимость┄┄┄▶ (пунктирная стрелка)один класс просто использует другой во временном вызове

Композиция vs агрегация — главная путаница новичков. Разница в жизненном цикле: при композиции (закрашенный ромб) part не может существовать без целого — удалили Order, удалились и его Item. При агрегации (пустой ромб) part живёт независимо — удалили Team, Player остался существовать сам по себе.

🎤 Закрыл тему, если можешь объяснить:
• три секции прямоугольника класса на диаграмме;
• разницу между композицией и агрегацией по жизненному циклу (если дошёл до 2-го слоя).