Открытая коллекция знаний

OpenU.Ru

Справочник UML. Объектно-ориентированное проектирование.



link (связь)

Кортеж ссылок на объекты. Экземпляр ассоциации или роли в ассоциации.

Семантика

Связь является единичным соединением двух или нескольких объектов. Она представляет собой кортеж (упорядоченный список) ссылок на объекты и является экземпляром ассоциации. Объекты могут быть как прямыми, так и непрямыми экземплярами классов, находящихся в соответствующих полициях ассоциации. В одной ассоциации не может быть дублирующихся связей - двух одинаковых кортежей ссылок на объекты.
У связи, которая является экземпляром класса ассоциации, может также быть список значений атрибутов. При этом в одном кортежа ссылок на объекты не может быть двух одинаковых связей, даже в том случае, если у них разные значения атрибутов. Связь получает индивидуальность от своего кортежа ссылок, поэтому среди них не может быть дубликатов.
Связь можно использовать для навигации, то есть объект, находящийся у одного конца данной связи, может получить доступ к множеству объектов, находящихся у других концов этой связи. Он может посылать им сообщения, (это называется "отправлять сообщение по ассоциации"). Такой процесс эффективен, если ассоциация допускает навигацию в нужном направлении. Если же ассоциация не допускает навигацию, такой доступ может вообще не быть возможным. Впрочем, даже если он возможен, то, скорее всего, будет неэффективен. Навигация в противоположных направлениях должна указываться явно.
В кооперации роль в ассоциации представляет собой контекстуальное, часто транзитивное, отношение между классификаторами. Экземпляром роли в ассоциации также будет являться связь. От прочих она отличается тем, что время ее существования будет ограничено временем жизни кооперации.

Нотация

Бинарная связь изображается в виде маршрута (линии) между двумя объектами - в виде одного или нескольких соединенных сегментов или дуг. Когда ассоциация рефлексивная, маршрут имеет вид петли, оба полюса которой относятся к одному и тому же объекту.
Более подробно о путях ассоциации см. в статье association.
Имя роли может стоять у каждого из концов связи. Около маршрута можно указать имя ассоциации. Если оно есть, его следует подчеркнуть, чтобы показать, что связь является экземпляром ассоциации. У связей не бывает своих собственных имен. Индивидуальность им придают объекты, с которыми они соединяются. Множественность для связей не указывается, поскольку у экземпляров не бывает множественности. Множественность относится к свойствам дескриптора, который определяет количество возможных экземпляров. У ролей-связей можно изображать другие указатели ассоциации (агрегацию, композицию и навигацию).
У связи может быть квалификатор. Значение квалификатора указывается в прямоугольнике. На рис. 118 изображены обычная связь и связь с квалификатором.

Рис. 118. Связи
Другие значки могут отражать прочие свойства ассоциаций, такие как направление навигации, агрегацию или композицию, стереотипы реализации и видимость.
n-арная связь. Эта связь изображается в виде ромба, от которого отходят маршруты к каждому из участвующих в ассоциации объектов. Используются и другие значки ассоциации и ролей с теми же возможностями, что и для бинарной связи.

Обсуждение

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

Алфавитный указатель