Объект (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). Анонимный активный объект класса РедакторЕтаП вначале посылает сообщение анонимному мультиобъекту класса Клиент. Это сообщение инициирует выбор единственного объекта класса Клиент, удовлетворяющего дополнительным условиям. После этого выбранному объекту посылается сообщение о необходимости отправить электронное письмо.