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

OpenU.Ru

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



rolename (имя роли)

Имя полюса ассоциации.
См. pseudoattribute.

Семантика

Имя роли служит для идентификации полюса ассоциации, а также для навигации от одного объекта к другому при помощи ассоциации. Поскольку имя роли можно использовать для двух различных целей, оно должно быть уникальным сразу в двух пространствах имен.
Все имена ролей в данной ассоциации должны отличаться друг от друга, В самоассоциации (ассоциации, где одни и тот же класс задействован более одного раза) имена ролей обязательны, так как иначе можно перепутать полюса ассоциации, прикрепленные к одному и тому же классу. Во всех других случаях имена ролей необязательны, так как полюса ассоциации можно различать по именам прикрепленных к ним объектов.
Кроме этого, имя роли используется для навигации от одного объекта к другим, связанным с ним посредством данной ассоциации. Каждый класс "видит"- присоединенные к нему ассоциации и может использовать их для поиска объектов, которые связаны с одним из его экземпляров. Имя роли, стоящее у того полюса ассоциации, который находится около соседнего класса, принято использовать для выражения навигации. Это выражение служит для доступа к объекту или множеству объектов, связанных друг с другом посредством данной ассоциации. На рис. 158 класс В связан с классом А посредством ассоциации "один-ко-многим", а с классом С - ассоциацией "один-к-одному". Возьмем объект bb из класса В - тогда с помощью выражения bb.theA можно получить множество объектов класса А, а с помощью выражения bb.theC - один объект класса С. В принципе имя роли на дальнем полюсе ассоциации подобно псевдоатрибуту класса, - то есть его можно использовать в качестве части выражения доступа, с помощью которого прослеживается ассоциация.
Имя роли можно использовать в качестве атрибута для получения значений, поэтому оно входит в пространство имен того класса, который находится на дальнем полюсе ассоциации. Оно находится в том же самом пространстве имен, что и имена атрибутов, причем как имена ролей, так и имена атрибутов должны быть в нем уникальны. Атрибуты и имена ролей ассоциаций могут передаваться путем наследования, поэтому имена атрибутов и псевдоатрибутов должны быть уникальны также и среди унаследованных имен. Имя роли, прикрепленное к классу-предку, можно использовать для навигации в классе-потомке. В примере с рис. 158 выражение bb.аnЕ допустимо, поскольку класс В наследует имя роли аnЕ у класса D.
Если ЬЬ: Sand dd: D
"bb.theA- - множество объектов класса А "bb.theC" - один экземпляр класса С
"ЬЬ.аnЕ" - один экземпляр класса Е Выражение "dd.theC недопустимо,
если только dd не является В

Рис. 158. Навигация по ассоциациям
Имена ролей и имена ассоциаций необязательны в том случае, если ассоциация каким-то обратом уже уникально идентифицирована. Например, ассоциацию можно идентифицировать только по ее имени или только по имени ролей на ее полюсах. И те, и другие имена указывать необязательно, хотя это разрешено. В случае с единственной бинарной ассоциацией можно опустить как имена ролей, так и имя ассоциации. В принципе имя роли требуется для выражения навигации. На практике инструмент моделирования может иметь правило создания неявных имен ролей (для этого он использует имена связанных ассоциацией классов).

Нотация

Имя роли изображается в виде строки текста, разметенной у полюса ассоциации, где она упирается в прямоугольник класса. Если имя роли уже указано, скрыть его невозможно. Оно может иметь указатель видимости - стрелку, которая указывает, может ли элемент на дальнем полюсе ассоциации "видеть" элемент, прикрепленный к имени роли.

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