Объект (object) — сущность с хорошо определенными границами и инди­видуальностью, которая инкапсулирует состояние и поведение

ДИАГРАММЫ КООПЕРАЦИИ

Назначение диаграммы кооперации. Объекты, их имена и графическое изображение. Активные и пассивные объекты, их графическое изображение Мультиобъекты и составные объекты. Графическое изображение связей, по­сылаемых и принимаемых сообщений между объектами. Формат и синтаксис записи сообщений. Стереотипы сообщений. Рекомендации по построении диаграмм кооперации.

Ключевые слова:кооперация, объект, активный объект, мультиобъ ект,составной объект, связь, сообщение, формат сообщения.

 

Диаграмма кооперации предназначена для описания поведения сие темы на уровне отдельных объектов, которые обмениваются между co6oi сообщениями, чтобы достичь нужной цели или реализовать некоторьи вариант использования. С точки зрения аналитика или архитектора систе мы в проекте важно представить структурные связи отдельных объекто между собой. Такое представление структуры модели как совокупност взаимодействующих объектов и обеспечивает диаграмма кооперации.

Кооперация

Кооперация (collaboration) — спецификация множества объектов от дельных классов, совместно взаимодействующих с целью реализации отдельных вариантов использования в общем контексте моделируемой системы.

Понятие кооперации - одно из фундаментальных в языке UML. Цель самой кооперации состоит в том, чтобы специфицировать особенности реализации отдельных вариантов использования или наиболее значимых операций в системе. Кооперация определяет структуру поведена системы в терминах взаимодействия участников этой кооперации.

На диаграмме кооперации размещаются объекты, представляющие собой экземпляры классов, связи между ними, которые, в свою очередь являются экземплярами ассоциаций и сообщения. Связи дополняющие стрелками сообщений, при этом показываются только те объекты, которые участвуют в реализации моделируемой кооперации. Далее, как и на диаграмме классов, показываются структурные отношения между объектами виде различных соединительных линий. Связи могут дополняться именами ролей, которые играют объекты в данной взаимосвязи. И, наконец, изображаются динамические взаимосвязи — потоки сообщений в форме стрелок с указанием направления рядом с соединительными линиями между объектами, при этом задаются имена сообщений и их порядковые номера в общей последовательности сообщений.

Одна и та же совокупность объектов может участвовать в реализации различных коопераций. В зависимости от рассматриваемой кооперации, могут изменяться как связи между отдельными объектами, так и поток сообщений между ними. Именно это отличает диаграмму кооперации от диаграммы классов, на которой должны быть указаны все без исключе­ния классы, их атрибуты и операции, а также все ассоциации и другие структурные отношения между элементами модели.

Объекты и их графическое изображение

Объект (object) — сущность с хорошо определенными границами и инди­видуальностью, которая инкапсулирует состояние и поведение.

В контексте языка UML любой объект является экземпляром клас­са, описанного в модели и представленного на диаграмме классов. Объект создается на этапе реализации модели или выполнения программы. Он имеет собственное имя и конкретные значения атрибутов. Следует рас­смотреть особенности семантики и графической нотации объектов, из которых строятся диаграммы.

Для диаграмм кооперации полное имя объекта в целом представляет собой строку текста, разделенную двоеточием и записанную в формате:

-(собственное имя объекта> '/'<Имя роли класса> :<Имя класса>

Имя роли класса указывается в том случае, когда соответствующий класс отсутствует в модели или разработчику необходимо акцентировать внимание на особенности его использования в рассматриваемом контек­сте моделирования взаимодействия. Имя класса — это имя одного из классов, представленного на диаграмме классов. Важно отметить, что вся запись имени объекта подчеркивается, что является визуальным призна­ком объектов на различных диаграммах языка UML.

Если указано собственное имя объекта, то оно должно начинаться со :строчной буквы. В то же время имя объекта, имя роли с символом «/» или имя класса могут отсутствовать. Однако двоеточие всегда должно стоять перед именем класса, а косая черта — перед именем роли.

Таким образом, на диаграммах кооперации могут встретиться следу-ощие варианты возможных записей полного имени "объекта:

о : С — объект с собственным именем о, экземпляр класса С;

• i_C — анонимный объект, экземпляр класса С;

• o_i (или просто о) - объект-сирота с собственным именем о;

о / R : С — объект с собственным именем о, экземпляр класса С, иг­рающий роль R;

/R : С - анонимный объект, экземпляр класса С, играющий роль R;

о / R — объект-сирота с собственным именем о, играющий роль R;

ЦК — анонимный объект и одновременно объект-сирота, играющий роль R.

Примеры изображения объектов на диаграммах кооперации приво­дятся на рис. 7.1.

Если собственное имя объекта отсутствует, то такой объект принято называть анонимным. Однако в этом случае обязательно ставится двоето­чие перед именем соответствующего класса (рис. 7.1, в). Отсутствовать может и имя класса — такой объект называется сиротой. Для него записы­вается только собственное имя объекта, двоеточие не ставится, имя клас­са не указывается (рис. 7.1, г). Если для объектов указываются атрибуты, то в большинстве случаев они принимают конкретные значения (рис. 7.1, б). Для отдельных объектов (рис. 7.1, д, е) могут быть дополнительно ука­заны роли, которые они играют в кооперации.

В контексте языка UML все объекты делятся на две категории: пас­сивные и активные. Пассивный объект оперирует только данными и не может инициировать деятельность по управлению другими объектами.

 

 

Рис.7.1. Примеры графических изображений объектов на диаграммах кооперации уровня примеров

 

 

Рис.7.2. Графическое изображение активного объекта (слева) на диаграмме кооперации

 

Однако пассивные объекты могут посылать сигналы в процессе выполне­ния запросов, которые они обрабатывают. На диаграмме кооперации пас­сивные объекты изображаются обычным образом без дополнительных стереотипов.

Активный объект (active object) имеет собственный процесс управления и может инициировать деятельность по управлению другими объектами.

Активные объекты на диаграмме кооперации обозначаются прямо­угольником с утолщенными границами (рис. 7.2). Каждый активный объ­ект является владельцем определенного процесса управления. В данном фрагменте диаграммы кооперации активный объект а : Клиент является инициатором открытия счета, который представлен анонимным объек­том : Счет.

Мультиобъект (multiobject) представляет собой множество аноним­ных объектов, которые могут быть образованы на основе одного класса.

На диаграмме кооперации мультиобъект используется для того, что­бы показать операции и сигналы, которые адресованы всему множеству анонимных объектов. Мультиобъект изображается двумя прямоугольни­ками, один из которых выступает из-за верхней правой вершины другого (рис. 7.2, а). При этом стрелка взаимосвязи относится ко всему множеству объектов, которые обозначает данный мультиобъект.

Рис.7.3. Графическое изображение мультиобъектов на диаграмме кооперации

 

На диаграмме коопе­рации может быть явно указано отношение агрегации (композиции) меж­ду мультиобъектом и отдельным объектом из его множества (рис. 7.3, б).

 

 

Рис.7.4. Фрагмент диаграммы кооперации для выбора адреса клиента для отправки электронного письма

 

 

 

Рис.7.5. Графическое изображение составного объекта на диаграмме кооперации

 

В следующем примере рассматривается ситуация с отправкой почто­вого сообщения клиенту из редактора электронной почты (рис. 7.4). Ано­нимный активный объект класса РедакторЕтаП вначале посылает сооб­щение анонимному мультиобъекту класса Клиент. Это сообщение ини­циирует выбор единственного объекта класса Клиент, удовлетворяющего дополнительным условиям. После этого выбранному объекту посылается сообщение о необходимости отправить электронное письмо.