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

OpenU.Ru

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



collaboration role (роль в кооперации)

Слот в кооперации для обьекта или связи. Определяет вид объекта или связи, которые могут появиться в экземпляре кооперации.
См. association role; classifier role; collaboration.

Семантика

Роль в кооперации не представляет собой объект или связь, использующийся в кооперации. Она только описывает их, то есть является тем местом, куда можно подставить объект или связь. Существует два вида ролей в кооперации - это роль классификатора и роль в ассоциации. У роли классификатора есть один или несколько базовых классификаторов; её экземпляром может являться объект, который, в свою очередь, представляет собой экземпляр этих классификаторов или их потомков. Роль в ассоциации может иметь базовую ассоциацию; её экземпляром является связь - экземпляр базовой ассоциации или ее потомков. Зачастую ассоциация определяется только в кооперации, иначе говоря, существует только для объектов, играющих определенные роли в кооперации, и не имеет смысла за пределами этой кооперации. В таком случае базовую ассоциацию можно не указывать. Она будет неявно определена в самой кооперации с ограничением, показывающим, что ее нельзя использовать где-либо ещё.

Нотация

Ролями в кооперации могут быть роли классификатора и роли в ассоциации.
Роль классификатора. Роль классификатора является классификатором, поэтому изображается в виде прямоугольника. Зачастую в таком прямоугольнике указывается только раздел для имени классификатора. Этот раздел должен содержать строку
ИмяРолиКлассификатора : СписокИмёнБазовыхКлассификаторов
В случае необходимости в имя базового классификатора может входить полный путь к элементу внешнего пакета (большинство инструментов моделирования обычно позволяют использовать сокращенную форму путей, разумеется, если при этом не возникает неясности). Имена пакетов указываются перед именем класса и отделяются от него двоеточием. Например:
display_ window: WindowingSystem: :GraplitcWindows: :Window
Стереотип для роли классификатора можно укалывать над строкой имени в виде текста, взятого в угловые скобки, или же в виде пиктограммы в верхнем правом углу раздела. Стереотип роли классификатора должен соответствовать стереотипу ее базового классификатора.
Роль классификатора, представляющая собой множество объектов, должна иметь указатель множественности (*) в верхнем правом углу раздела символа класса. Множественность показывает число объектов, которые могут быть связаны с ролью в одном экземпляре кооперации. Если указатель множественности отсутствует, его значение равно единице.
Имя роли классификатора можно не указывать. В этом случае в строке имени должны остаться двоеточие и имя класса. Такое написание указывает на анонимность объекта данного класса.
Если в модели существует множественная классификация, то роль может иметь несколько классификаторов. Объект в таком случае будет экземпляром каждого из них.
Класс роли классификатора можно скрыть (вместе с двоеточием).
Объект или связь, которые создаются во время взаимодействия, имени ограничение в виде ключевого слова new (новый). Объект или связь, которые уничтожаются во время взаимодействия, имеют ограничение в виде ключевого слова destroyed (уничтожаемый). Ключевые слова можно использовать даже в тех случаях, когда у элемента нет имени. Оба этих ключевых слова могут использоваться вместе, однако в таких случаях их можно заменить на одно - transient (временный).
Роль в ассоциации. Роль в ассоциации является ассоциацией, потому изображается в виде маршрута между двумя символами ролей классификатора. К маршруту может присоединяться имя следующего вида:
ИмяРолиВАссоциации : ИмяБаэовойАссоциации
Если имя базовой ассоциации не указано, значит, ее просто не существует. Имена ролей и прочие описывающие элементы базовой ассоциации могут указываться на самом маршруте.
Если один из полюсов роли в ассоциации связан с ролью-классом чья множественность больше единицы, то, чтобы подчеркнуть эту множественность, ее указатель можно поместить на полюс ассоциации.

На рис. 51 показан пример ролей в кооперации.

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