Skip to main content

Диаграмма классов (Class diagram)

Диаграмма классов отображает типы классов системы и различные связи между классами. На диаграммах этого типа изображаются также атрибуты классов, операции классов и ограничения, которые накладываются на связи между классами. Может быть использована как альтернатива ERD при описании моделей данных, особенно если необходимо зафиксировать операции над классами.

Пример:

Основные элементы

Класс, его атрибуты и операции над классом

Класс - сущность, фигурирующая в системе

Атрибуты класса - свойства объектов класса.

Операция - функция над классов или его преобразование. Операция может иметь параметры и возвращать значения.

Связи:

- ассоциация

- агрегация

- наследование

Ассоциация (association) – отношения между экземплярами классов.

Каждый конец ассоциации обладает кратностью (мощностью, multiplicity), которая показывает, сколько объектов, расположенных с соответствующего конца ассоциации, может участвовать в данном отношении. В примере ниже каждый Товар имеет сколь угодно Записей в накладной, но каждая Запись в накладной обязательно один Товар.

Ассоциации может быть присвоено имя. В качестве имени обычно выбирается глагол или глагольное словосочетание, сообщающие смысл и назначение связи.

Агрегация (aggregation) – это ассоциация типа «целое-часть». Агрегация в UML представляется в виде прямой с ромбом на конце. Ромб на связи указывает, какой класс является агрегирующим (т.е. «состоящим из»).

Композиция (composition) – это такая агрегация, где объекты-части не могут существовать сами по себе и уничтожаются при уничтожении объекта агрегирующего класса. Композиция изображается так же, как ассоциация, только ромбик закрашен.

Важно понимать разницу между агрегацией и композицией: при агрегации объекты-части могут существовать сами по себе, а при композиции — нет. Пример агрегации: автомобиль—колесо, пример композиции: дом—комната.

Наследование (inheritance) – это отношение типа «общее-частное». Используется, когда один класс обладает поведением и структурой других классов. При создании производного класса на основе базового (одного или нескольких) возникает иерархия наследования.

Дополнительно:

  1. Статья на хабре про диаграммы классов

Задание:

  1. Что такое квантор видимости? Какие значения может принимать квантор видимости и что они означают? Приведите примеры кванторов видимости для каких-то из классов Ensi.
  2. Постройте UML диаграмму для классов сервиса, управляющего акциями, промокодами, кешбеком.