Диаграмма классов (Class diagram)
Диаграмма классов отображает типы классов системы и различные связи между классами. На диаграммах этого типа изображаются также атрибуты классов, операции классов и ограничения, которые накладываются на связи между классами. Может быть использована как альтернатива ERD при описании моделей данных, особенно если необходимо зафиксировать операции над классами.
Пример:
Основные элементы
Класс, его атрибуты и операции над классом | Класс - сущность, фигурирующая в системе Атрибуты класса - свойства объектов класса. Операция - функция над классов или его преобразование. Операция может иметь параметры и возвращать значения. |
---|---|
Связи: - ассоциация - агрегация - наследование | Ассоциация (association) – отношения между экземплярами классов. Каждый конец ассоциации обладает кратностью (мощностью, multiplicity), которая показывает, сколько объектов, расположенных с соответствующего конца ассоциации, может участвовать в данном отношении. В примере ниже каждый Товар имеет сколь угодно Записей в накладной, но каждая Запись в накладной обязательно один Товар. Ассоциации может быть присвоено имя. В качестве имени обычно выбирается глагол или глагольное словосочетание, сообщающие смысл и назначение связи. Агрегация (aggregation) – это ассоциация типа «целое-часть». Агрегация в UML представляется в виде прямой с ромбом на конце. Ромб на связи указывает, какой класс является агрегирующим (т.е. «состоящим из»). Композиция (composition) – это такая агрегация, где объекты-части не могут существовать сами по себе и уничтожаются при уничтожении объекта агрегирующего класса. Композиция изображается так же, как ассоциация, только ромбик закрашен. Важно понимать разницу между агрегацией и композицией: при агрегации объекты-части могут существовать сами по себе, а при композиции — нет. Пример агрегации: автомобиль—колесо, пример композиции: дом—комната. Наследование (inheritance) – это отношение типа «общее-частное». Используется, когда один класс обладает поведением и структурой других классов. При создании производного класса на основе базового (одного или нескольких) возникает иерархия наследования. |
Дополнительно:
Задание:
- Что такое квантор видимости? Какие значения может принимать квантор видимости и что они означают? Приведите примеры кванторов видимости для каких-то из классов Ensi.
- Постройте UML диаграмму для классов сервиса, управляющего акциями, промокодами, кешбеком.