Объекты диаграммы кооперации и их графическое изображение
Объект (Object) — сущность с хорошо определенными границами и индивидуальностью, которая инкапсулирует состояние и поведение.
В контексте языка UML любой объект является экземпляром класса, описанного в модели и представленного на диаграмме классов. Объект создается на этапе реализации модели или выполнения программы. Он имеет собственное имя и конкретные значения атрибутов.
Следует рассмотреть особенности семантики и графической нотации объектов, из которых строятся диаграммы.
Для диаграмм полное имя объекта в целом представляет собой строку текста, разделенную двоеточием и записанную в формате: <собственное имя объекта >'/'<Имя роли класса>:<Имя класса >.
Имя роли класса указывается в том случае, когда соответствующий класс отсутствует в модели или разработчику необходимо акцентировать внимание на особенности его использования в рассматриваемом контексте моделирования взаимодействия. Имя класса – это имя одного из классов, представленного на диаграмме классов. Важно отметить, что вся запись имени объекта подчеркивается, что является визуальным признаком объектов на различных диаграммах языка UML.
Если указано собственное имя объекта, то оно должно начинаться со строчной буквы. В тоже время имя объекта, имя роли с символом "/" или имя класса могут отсутствовать. Однако двоеточие всегда должно стоять перед именем класса, а косая черта – перед именем роли.
Таким образом, на диаграммах могут встретиться следующие варианты:
о : C– объект с собственным именем о, экземпляр класса С.
: C– анонимный объект, экземпляр класса С.
о :(или просто о) — объект–сирота с собственным именем о.
о / R : C— объект с собственным именем о, экземпляр класса С, играющий роль R.
/ R : C— анонимный объект, экземпляр класса С, играющий роль R.
о / R— объект–сирота с собственным именем о, играющий роль R.
/ R— анонимный объект и одновременно объект–сирота, играющий роль R.
Примеры изображения объектов на диаграммах кооперации приводятся на рис. 6.43.
Рис. 6.43. Примеры графических изображений объектов на диаграммах кооперации и последовательности
Если собственное имя объекта отсутствует, то такой объект принято называть анонимным. Однако в этом случае обязательно ставится двоеточие перед именем соответствующего класса. Отсутствовать может и имя класса – такой объект называется сиротой. Для него записывается только собственное имя объекта, двоеточие не ставится, имя класса не указываются. Если для объектов указываются атрибуты, то в большинстве случаев они принимают конкретные значения. Для отдельных объектов могут быть дополнительно указаны роли, которые они играют в кооперации.
В контексте языка UML все объекты делятся на две категории: пассивные и активные. Пассивный объект оперирует только данными и не может инициировать деятельность по управлению другими объектами. Однако пассивные объекты могут посылать сигналы в процессе выполнения запросов, которые они обрабатывают. На диаграмме кооперации пассивные объекты изображаются обычным образом без дополнительных стереотипов.
Активный объект (Active object) имеет собственный процесс управления и может инициировать деятельность по управлению другими объектами.
Активный объект на диаграмме кооперации обозначаются прямоугольником с утолщенными границами (рис. 6.44.). Каждый активный объект является владельцем определенного процесса управления.
Рис. 6.44. Графическое изображение активного объекта (слева) на диаграмме кооперации
В данном фрагменте диаграммы кооперации активный объект а : Клиент является инициатором открытия счета, который представлен анонимным объектом : Счет.
Кооперация объектов
Кооперация (Collaboration) — спецификация множества объектов отдельных классов, совместно взаимодействующих с целью реализации отдельных вариантов использования в общем контексте моделируемой системы.
Понятие кооперации – одно из фундаментальных в языке UML. Цель самой кооперации состоит в том, чтобы специфицировать особенности реализации отдельных вариантов использования или наиболее значимых операций в системе. Кооперация определяет структуру поведения системы в терминах взаимодействия участников этой кооперации.
На диаграмме кооперации размещаются объекты, представляющие собой экземпляры классов, связи между ними, которые в свою очередь являются экземплярами ассоциаций и сообщения. Связи дополняются стрелками сообщений, при этом показываются только те объекты, которые участвуют в реализации моделируемой кооперации. Далее, как и на диаграмме классов, показываются структурные отношения между объектами в виде различных соединительных линий. Связи могут дополняться именами ролей, которые играют объекты в данной взаимосвязи. И, наконец, изображаются динамические взаимосвязи — потоки сообщений в форме стрелок с указанием направления рядом с соединительными линиями между объектами, при этом задаются имена сообщений и их порядковые номера в общей последовательности сообщений.
Одна и та же совокупность объектов может участвовать в реализации различных коопераций. В зависимости от рассматриваемой кооперации, могут изменяться как связи между отдельными объектами, так и поток сообщений между ними. Именно это отличает диаграмму кооперации от диаграммы классов, на которой должны быть указаны все без исключения классы, их атрибуты и операции, а также все ассоциации и другие структурные отношения между элементами модели.
На кооперативных диаграммах линию жизни объекта явным образом не показывают, хотя можно показать сообщения create и destroy. Не показывают там и фокус управления, однако порядковые номера сообщения могут отображать вложенность.
В языке UML предусмотрены стандартные действия, выполняемые в ответ на получение соответствующего сообщения. Они могут быть явно указаны на диаграмме кооперации в форме стереотипа перед именем сообщения, к которому они относятся, или выше его. В этом случае они записываются в угловых кавычках.
Кооперативная диаграмма акцентирует внимание на организации объектов, принимающих участие во взаимодействии. Как показано на рис. 6.45., для создания кооперативной диаграммы нужно расположить участвующие во взаимодействии объекты в виде вершин графа. Затем связи, соединяющие эти объекты, изображаются в виде дуг этого графа. Наконец, связи дополняются сообщениями, которые объекты принимают и посылают. Это дает пользователю ясное визуальное представление о потоке управления в контексте структурной организации кооперирующихся объектов.
Рис. 6.45. Кооперативная диаграмма