Связи между объектами

 

Аналогично ключевому понятию модели классов - понятию ассоциации, - для объектов существует понятие связи (link). Связь есть экземпляр ассоциации, установленной для объектов данных классов. Бинарная связь представляется как сплошная линия между двумя объектами.

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

 

Рис. 9.15 – Связи

 

Квалификаторы бывают следующих видов:

- «association» задает тип связи как экземпляр ассоциации, соединяющей соответствующие классы. Так как все связи - экземпляры ассоциации, то указывать этот квалификатор не имеет смысла, т.к. соответствующий ему тип связи выставляется по умолчанию;

- «parameter» указывает, что объект является параметром операции другого объекта-партнера связи;

- «local» показывает, что объект ‑ локальный параметр операции или метода другого объекта-партнера связи;

- «global» ‑ аналогично предыдущему, только здесь глобальный параметр;

- «self» ‑ применяется для обозначения связи объекта с самим собой. Используется для обозначения возможности посылки объектом сообщений самому себе.

N-арная связь представляется на диаграмме как ромб, от которого выходят соединения к объектам. Остальные атрибутьи N-арной связи такие же, как и у бинарной связи.

В контексте диаграмм классов пакет (package) - это вместилище для некоторого набора классов и других пакетов. Пакет является самостоятельным пространством имен. В UML нет каких-либо ограничений на правила, по которым разработчики могут или должны группировать классы в пакеты. Но есть стандартные случаи, когда такая группировка уместна, например, тесно взаимодействующие классы, или разбиение системы на подсистемы.

Пакет физически содержит сущности, определенные в нем. Это означает, что если будет уничтожен пакет, то будет уничтожено и все его содержимое. При описании классов пакета нередко бывает полезно сослаться на класс, определенный в другом пакете. Это можно сделать, импортировав нужный пакет. Это означает, что в импортирующем пакете станут доступными все классы импортируемого пакета. При этом пространства имен не объединятся. Для использования класса надо будет указать его имя с полным путем пакета, в котором он лежит. На рис. 9.16 показано, что пакет с именем «Трасса» импортирует пакет с именем «Подъем».

 

 

Рис. 9.16