
Отношения между структурными элементами
Рис. 6.
Агрегация – специальная форма ассоциации, определяет отношение между целым и частями. Разница между агрегацией и ассоциацией является в большей степени вопросом личных предпочтений разработчика, чем семантики. Единственное ограничение: связи порождаемые агрегацией не могут образовывать циклов.
Композиция – специальная форма агрегации, для которой время жизни частей совпадает со временем жизни композита. Объект может быть частью только одного композита. Композитный объект несет полную ответственность за управление всеми своими частями, отвечает за их создание и удаление.
Обобщение – отношение между более общим (предком) и более специальным классом (потомком). Наследование в объектно-ориентированных языках – это и есть отношение обобщения.
Зависимость – отношение между двумя элементами, в котором изменение независимого элемента (поставщика, сервера), влияет на зависимый элемент (клиент). Зависимость указывает на семантические отношения между классами, а не между объектами. Отношения обобщения и ассоциации попадают в раздел зависимостей, однако у них есть своя специфическая семантика. Зависимостями считают все прочие отношения. Существуют различные виды зависимости. Например, вызов (call) указывает на то, что метод одного класса вызывает операцию в другом классе, создание экземпляра (instantiate) – метод одного класса порождает экземпляр другого класса. Описание остальных видов зависимостей можно найти в [1].
Реализация – отношение между спецификацией и её реализацией. Спецификация – это определение структуры или поведения. На диаграммах классов это отношение обычно связывает интерфейс и с его реализацией. Реализация подобна обобщению. Наследуется спецификация поведения (декларация операций), но не наследуется воплощение (реализация операций).
На рисунке 7 показан пример диаграммы классов для системы складского учета. На ней рядом с концами ассоциаций Покупатель-Заказ и Позиция заказа-Товар в прямоугольниках указан квалификатор. Квалификатор – это одна или несколько переменных, значения которых, однозначно определяют объект в группе объектов, связанных с ним посредством ассоциации. Над некоторыми ассоциациями указана стрелка, которая определяет направление прочтения ассоциации. Например: Покупатель размещает Заказ.
Диаграмма классов системы складского учета
Рис. 7
На диаграммах любого типа допускается указывать примечания (см. рис. 8). Примечания могу существовать сами по себе или быть связанными пунктирной линией с элементами, которые они комментируют.
Примечание
Рис. 8
При создании диаграмм классов следует руководствоваться следующими рекомендациями [2]:
Не пытайтесь задействовать все доступные понятия. Начните с простых: классы, ассоциации, атрибуты, обобщения. Обращайтесь к дополнительным понятиям, только если они действительно необходимы.
Концептуальные диаграммы классов полезны при изучении делового языка. В таких диаграммах необходимо всячески избегать обсуждения программного обеспечения и применять очень простые обозначения.
Не надо строить модели для всех частей системы, вместо этого следует сконцентрироваться на ключевых аспектах. Лучше создать мало диаграмм, которые постоянно применяются в работе и отражают все внесенные изменения, чем иметь дело с большим количеством забытых и устаревших моделей.