Редактор UML-диаграммы классов

Спроектируйте иерархию классов визуально: добавьте классы, их поля и методы, связи между ними. Редактор автоматически построит диаграмму и сгенерирует C++-каркас.

UML Наследование Автогенерация кода

Классы

Подсказка. Атрибуты и методы записывайте в формате «имя : тип». Если тип не указан, будет использован int для атрибутов и void для методов.

Связи между классами

Типы связей: наследование (public Base), композиция (объект-член), агрегация (указатель или ссылка), ассоциация (использование).

UML-диаграмма

C++-каркас

// Добавьте хотя бы один класс — и здесь появится код.

Обозначения UML

СвязьКак выглядитСмысл в C++
Наследование Child ──▷ Parent class Child : public Parent { ... };
Композиция A ◆── B Член-объект: B b; внутри A
Агрегация A ◇── B Указатель или ссылка: B* b;
Ассоциация A ──── B Класс A использует B (параметр, локальная переменная)
Разница между композицией и агрегацией в жизненном цикле: при композиции часть уничтожается вместе с целым, при агрегации — может существовать и отдельно.

Задание

  1. Соберите иерархию «Фигура → Круг, Квадрат» с общим методом area().
  2. Добавьте в базовый класс виртуальный деструктор. Как это отразится в сгенерированном коде?
  3. Спроектируйте класс Library, который содержит несколько Book. Какую связь использовать — композицию или агрегацию?
  4. Сгенерируйте каркас и доведите его до компилирующегося состояния: заполните тела методов.
  5. Почему protected удобно использовать в базовом классе при наследовании? Попробуйте сделать атрибуты private — какие проблемы появятся у наследников?