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