OpenU.Ru
Кортеж ссылок на объекты. Экземпляр ассоциации или роли в ассоциации.
Семантика
Связь является единичным соединением двух или нескольких объектов. Она представляет
собой кортеж (упорядоченный список) ссылок на объекты и является экземпляром
ассоциации. Объекты могут быть как прямыми, так и непрямыми экземплярами классов,
находящихся в соответствующих полициях ассоциации. В одной ассоциации не может
быть дублирующихся связей - двух одинаковых кортежей ссылок на объекты.
У связи, которая является экземпляром класса ассоциации, может также быть список
значений атрибутов. При этом в одном кортежа ссылок на объекты не может быть
двух одинаковых связей, даже в том случае, если у них разные значения атрибутов.
Связь получает индивидуальность от своего кортежа ссылок, поэтому среди них
не может быть дубликатов.
Связь можно использовать для навигации, то есть объект, находящийся у одного
конца данной связи, может получить доступ к множеству объектов, находящихся
у других концов этой связи. Он может посылать им сообщения, (это называется
"отправлять сообщение по ассоциации"). Такой процесс эффективен, если
ассоциация допускает навигацию в нужном направлении. Если же ассоциация не допускает
навигацию, такой доступ может вообще не быть возможным. Впрочем, даже если он
возможен, то, скорее всего, будет неэффективен. Навигация в противоположных
направлениях должна указываться явно.
В кооперации роль в ассоциации представляет собой контекстуальное, часто транзитивное,
отношение между классификаторами. Экземпляром роли в ассоциации также будет
являться связь. От прочих она отличается тем, что время ее существования будет
ограничено временем жизни кооперации.
Нотация
Бинарная связь изображается в виде маршрута (линии) между двумя объектами -
в виде одного или нескольких соединенных сегментов или дуг. Когда ассоциация
рефлексивная, маршрут имеет вид петли, оба полюса которой относятся к одному
и тому же объекту.
Более подробно о путях ассоциации см. в статье association.
Имя роли может стоять у каждого из концов связи. Около маршрута можно указать
имя ассоциации. Если оно есть, его следует подчеркнуть, чтобы показать, что
связь является экземпляром ассоциации. У связей не бывает своих собственных
имен. Индивидуальность им придают объекты, с которыми они соединяются. Множественность
для связей не указывается, поскольку у экземпляров не бывает множественности.
Множественность относится к свойствам дескриптора, который определяет количество
возможных экземпляров. У ролей-связей можно изображать другие указатели ассоциации
(агрегацию, композицию и навигацию).
У связи может быть квалификатор. Значение квалификатора указывается в прямоугольнике.
На рис. 118 изображены обычная связь и связь с квалификатором.
Рис. 118. Связи
Другие значки могут отражать прочие свойства ассоциаций, такие как направление
навигации, агрегацию или композицию, стереотипы реализации и видимость.
n-арная связь. Эта связь изображается в виде ромба, от которого отходят маршруты
к каждому из участвующих в ассоциации объектов. Используются и другие значки
ассоциации и ролей с теми же возможностями, что и для бинарной связи.
Обсуждение
Каким же образом можно изобразить зависимость на диаграмме объектов? В целом,
зависимость представляет собой отношение, существующее между классами, а не
между объектами. Следовательно, их место - не на диаграммах объектов, а на диаграммах
классов. Но в таком случае, что же делать с аргументами процедур, их локальными
переменными и вызывающими операцию объектами? Они должны существовать в виде
фактических структур данных, а не просто зависимостей. Таким образом, их можно
изображать в виде связей. Вызывающему операцию объекту требуется ссылка на целевой
объект, - иначе говоря, связь. Некоторые связи могут являться экземплярами ролей
в ассоциации, участвующих в кооперации (как большинство параметров и локальных
переменных). Все прочие зависимости относятся к классу как таковому, а не к
его конкретным объектам.