Рис. 11.9. Квалификация
Кроме того, роли в ассоциациях могут иметь пометки
видимости. Например, на рис. 11.10 показаны ассоциации между
Начальником и Женщиной, а также между Женщиной и Загадкой. Для данного экземпляра Начальника можно определить
соответствующие экземпляры Женщины. С другой стороны, Загадка приватна для Женщины, поэтому она недоступна извне.
Как показано на рисунке, из объекта Начальника можно перемещаться к экземплярам Женщины (и наоборот), но нельзя
видеть экземпляры Загадки для объектов Женщины.
Рис. 11.10. Видимость
На конце ассоциации можно задать три уровня видимости, добавляя символ видимости к имени роли:
по умолчанию для роли задается публичная видимость;
приватная видимость указывает, что объекты на данном конце недоступны любым объектам вне ассоциации;
защищенная видимость (protected) указывает, что объекты на данном конце недоступны любым объектам вне
ассоциации, за исключением потомков того класса, который указан на противоположном конце ассоциации.
В языке UML ассоциации могут иметь свойства. Как показано на рис, 11.11, такие возможности отображаются с помощью
классов-ассоциаций. Эти классы присоединяются к линии ассоциации пунктирной линией и рассматриваются как классы со
свойствами ассоциаций или как ассоциации со свойствами классов.
Рис. 11.11. Класс-ассоциация
Свойства класса-ассоциации характеризуют не один, а пару объектов, в данном случае — пару экземпляров, Профессор и
Университет.
Отношения агрегации и композиции в языке UML считаются разновидностями ассоциации, применяемыми для
отображения структурных отношений между «целым» (агрегатом) и его «частями».
Агрегация показывает отношение по
ссылке (в агрегат включены только указатели на части),
композиция — отношение физического включения (в агрегат
включены сами части).
Зависимость является отношением использования между клиентом (зависимым элементом) и поставщиком (независимым
элементом). Обычно операции клиента:
вызывают операции поставщика;
имеют сигнатуры, в которых возвращаемое значение или аргументы принадлежат классу поставщика.
Например, на рис. 11.12 показана зависимость класса Заказ от класса Книга, так как Книга используется в операциях
проверкаДоступности, добавить и удалить класса Заказ.