Диаграмма коопераций. Тема 43 Практическое занятие 25 Построение диаграммы коопераций.. Построение диаграммы коопераций
Скачать 370.74 Kb.
|
ПЛАН ЗАНЯТИЯ
Результаты освоения дисциплины (профессионального модуля) (в соответствии с ФГОС СПО):
Теоретический материал Диаграмма кооперации предназначена для спецификации структурных аспектов взаимодействия. Главная особенность диаграммы кооперации заключается в возможности графически представить не только последовательность взаимодействия, но и все структурные отношения между объектами, участвующими в этом взаимодействии. Прежде всего, на диаграмме кооперации в виде прямоугольников изображаются участвующие во взаимодействии объекты, содержащие имя объекта, его класс и, возможно, значения атрибутов. Далее, как и на диаграмме классов, указываются ассоциации между объектами в виде различных соединительных линий. При этом можно явно указать имена ассоциации и ролей, которые играют объекты в данной ассоциации. Дополнительно могут быть изображены динамические связи – потоки сообщений. Они представляются также в виде соединительных линий между объектами, над которыми располагается стрелка с указанием направления, имени сообщения и порядкового номера в общей коопераций инициализации сообщений. В отличие от диаграммы коопераций, на диаграмме кооперации изображаются только отношения между объектами, играющими определенные роли во взаимодействии. С другой стороны, на этой диаграмме не указывается время в виде отдельного измерения. Поэтому последовательность взаимодействий и параллельных потоков может быть определена с помощью порядковых номеров. Следовательно, если необходимо явно специфицировать взаимосвязи между объектами в реальном времени, лучше это делать на диаграмме коопераций. Поведение системы может описываться на уровне отдельных объектов, которые обмениваются между собой сообщениями, чтобы достичь нужной цели или реализовать некоторый сервис. С точки зрения аналитика или конструктора важно представить в проекте системы структурные связи отдельных объектов между собой. Такое статическое представление структуры системы как совокупности взаимодействующих объектов и обеспечивает диаграмма кооперации. Таким образом, с помощью диаграммы кооперации можно описать полный контекст взаимодействий как своеобразный временной «срез» совокупности объектов, взаимодействующих между собой для выполнения определенной задачи или бизнес-цели программ- ной системы. Кооперация (collaboration) — множество взаимодействующих с определенной целью объектов в общем контексте моделируемой системы. Цель самой кооперации состоит в том, чтобы специфицировать особенности реализации отдельных наиболее значимых операций в системе. Кооперация может быть представлена на двух уровнях: на уровне спецификации – показывает роли классификаторов и роли ассоциаций в рассматриваемом взаимодействии; на уровне примеров – указывает экземпляры и связи, образующие отдельные роли в кооперации. Диаграмма кооперации уровня спецификации показывает роли, которые играют участвующие во взаимодействии элементы. Элементами кооперации на этом уровне являются классы и ассоциации, которые обозначают отдельные роли классификаторов и ассоциации между участниками кооперации. Диаграмма кооперации уровня примеров представляется совокупностью объектов (экземпляры классов) и связей (экземпляры ассоциаций). При этом связи дополняются стрелками сообщений. На данном уровне показываются только релевантные объекты, т. е. имеющие непосредственное отношение к реализации операции или классификатора. В кооперации уровня примеров определяются свойства, которые должны иметь экземпляры для того, чтобы участвовать в кооперации. Кроме свойств объектов на диаграмме кооперации также указываются ассоциации, которые должны иметь место между объектами кооперации. Одна и та же совокупность объектов может участвовать в различных кооперациях. При этом, в зависимости от рассматриваемой кооперации, могут изменяться как свойства от- дельных объектов, так и связи между ними. Именно это отличает диаграмму кооперации от диаграммы классов, на которой должны быть указаны все свойства и ассоциации между элементами диаграммы. Кооперация на уровне спецификации изображается на диаграмме пунктирным эллипсом, внутри которого записывается имя этой кооперации (рис. 1). Такое представление кооперации относится к отдельному варианту использования и детализирует особенности его последующей реализации. Символ эллипса кооперации соединяется отрезками пунктирной линии с каждым из участников этой кооперации, в качестве которых могут выступать объекты или классы. Каждая из этих пунктирных линий помечается ролью участника. Роли соответствуют именам элементов в контексте всей кооперации. Эти имена трактуются как параметры, которые ограничивают спецификацию элементов при любом их появлении в отдельных представлениях модели. Рис. 1. Общее представление кооперации на диаграммах уровня спецификации Простой класс на диаграмме кооперации обозначается прямоугольником класса, внутри которого записывается строка текста. Эта строка текста называется ролью классификатора. Роль классификатора показывает особенность использования объектов данного класса. Обычно в прямоугольнике показывается только секция имени класса, хотя не исключается возможность указания секций атрибутов и операций. Если кооперация допускает обобщенное представление, то на диаграммах могут быть указаны отношения обобщения соответствующих элементов. Этот способ может быть использован для определения отдельных коопераций, которые являются, в свою очередь, частным случаем или специализацией другой кооперации. Такая ситуация изображается обычной стрелкой обобщения, направленной от символа дочерней кооперации к символу кооперации-предка (рис. 2). При этом роли дочерних коопераций могут быть специализациями ролей коопераций-предков. Рис. 2. Графическое изображение отношения обобщения между отдельными кооперациями уровня спецификации Объекты являются основными элементами или графическими примитивами, из которых строится диаграмма кооперации на уровне примеров. Для графического изображения объектов используется такой же символ прямоугольника, что и для классов. Объект (object) является отдельным экземпляром класса, который создается на этапе выполнения программы. Он может иметь свое собственное имя и конкретные значения атрибутов. Отдельные примеры изображения объектов и классов на диаграмме кооперации при- водятся на следующем рисунке (рис. 3). Рис. 3. Примеры различных вариантов записи имен объектов, ролей и классов на диаграммах кооперации Так, в первом случае (рис. 3, а) обозначен объект с именем «клиент», играющий роль «инициатор запроса». Далее (рис. 3, б) следует обозначение анонимного объекта, который играет роль инициатора запроса. В обоих случаях не указан класс, на основе которого будут созданы эти объекты. Обозначение класса присутствует в следующем варианте записи (рис. 3, в), причем объект также анонимный. Применительно к уровню спецификации на диаграммах кооперации могут присутствовать именованные классы с указанием роли класса в кооперации (рис. 3, г) или анонимные классы, когда указывается только его роль (рис. 3, д). Последний случай характерен для ситуации, когда в модели могут присутствовать несколько классов с именем «Клиент», поэтому требуется явно указать имя соответствующего пакета База данных (рис. 3, е). Мультиобъект представляет собой целое множество объектов на одном из концов ассоциации. На диаграмме кооперации Мультиобъект используется для того, чтобы показать операции и сигналы, которые адресованы всему множеству объектов, а не только одному. Мультиобъект изображается двумя прямоугольниками, один из которых выступает из-за верхней правой вершины другого (рис. 4, а). При этом стрелка сообщения относится ко всему множеству объектов, которые обозначают данный мультиобъект. На диаграмме кооперации может быть явно указано отношение композиции между мультиобъектом и отдельным объектом из его множества (рис. 4, б). Рис. 4. Графическое изображение мультиобъектов на диаграмме кооперации В контексте языка UML все объекты делятся на две категории: пассивные и активные. Пассивный объект оперирует только данными и не может инициировать деятельность по управлению другими объектами. Однако пассивные объекты могут посылать сигналы в процессе выполнения запросов, которые они получают. Активный объект имеет свою собственную нить управления и может инициировать деятельность по управлению другими объектами. При этом под нитью понимается некоторый облегченный поток управления, который может выполняться параллельно с другими вычислительными нитями или нитями управления в пределах одного вычислительного процесса или процесса управления. Активные объекты на канонических диаграммах обозначаются прямоугольником с более широкими границами (рис. 5). Иногда может быть явно указано ключевое слово (помеченное значение) {active}, чтобы выделить активный объект на диаграмме. Каждый активный объект может инициировать единственную нить или процесс управления и представлять исходную точку потока управления. В приведенном фрагменте диаграммы кооперации активный объект «а: Вызывающий абонент» является инициатором процесса установления со- единения для обмена информацией с другим абонентом (на диаграмме не показан). Рис. 5. Графическое изображение активного объекта (слева) на диаграмме кооперации В следующем примере рассматривается ситуация с вызовом функции печати из текстового редактора (рис. 6). Анонимный активный объект «Текстовый редактор» вначале посылает сообщение анонимному мультиобъекту «Принтер», которое инициирует выбор единственного объекта «Принтер», возможно, удовлетворяющего некоторым дополнительным условиям. После этого выбранному объекту посылается сообщение о необходимости напечатать документ, загруженный в текстовый редактор. Рис. 6. Фрагмент диаграммы кооперации для вызова функции печати из текстового редактора Составной объект или объект-контейнер предназначен для представления объекта, имеющего собственную структуру и внутренние потоки (нити) управления. Составной объект является экземпляром составного класса (класса-контейнера), который связан отношением агрегации или композиции со своими частями. Аналогичные отношения связывают между собой и соответствующие объекты. На диаграммах кооперации такой составной объект изображается как обычный объект, состоящий из двух секций: верхней и нижней. В верхней секции записывается имя составного объекта, а в нижней – его составные части вместо списка его атрибутов (рис. 7). При этом допускается иметь в качестве частей другие составные объекты. Рис. 7. Графическое изображение составного объекта на диаграмме кооперации Связь является экземпляром или примером произвольной ассоциации. Связь как элемент языка UML может иметь место между двумя и более объектами. Бинарная связь на диаграмме кооперации изображается отрезком прямой линии, соединяющей два прямоугольника объектов (см. рис. 8). На каждом из концов этой линии могут быть явно указаны имена ролей данной ассоциации. Рядом с линией в ее средней части может записываться имя соответствующей ассоциации. Связи не имеют собственных имен, поскольку полностью идентичны как экземпляры ассоциации. Другими словами, все связи на диаграмме кооперации могут быть только анонимными и записываются без двоеточия перед именем ассоциации. Для связей не указывается также и кратность. Однако другие обозначения специальных случаев ассоциации (агрегация, композиция) могут присутствовать на отдельных концах связей. Например, символ связи типа «композиция» между мультиобъектом «Принтер» и отдельным объектом «Принтер» (см. рис. 6). Связь может иметь некоторые стереотипы, которые записываются рядом с одним из ее концов и указывают на особенность реализации данной связи. В языке UML для этой цели могут использоваться следующие стереотипы: «association» – ассоциация (предполагается по умолчанию, поэтому этот стереотип можно не указывать); «parameter» – параметр метода. Соответствующий объект может быть только пара- метром некоторого метода; «local» – локальная переменная метода. Ее область видимости ограничена только соседним объектом; «global» – глобальная переменная. Ее область видимости распространяется на всю диаграмму кооперации; «self» – рефлексивная связь объекта с самим собой, которая допускает передачу объектом сообщения самому себе. На диаграмме кооперации рефлексивная связь изображается петлей в верхней части прямоугольника объекта. Некоторые примеры связей с различными стереотипами изображены на рис. 8. Здесь представлена обобщенная схема некоторой конкретной компании с именем "С", которая состоит из отделов (анонимный мультиобъект «Отдел»). Последние, в свою очередь, состоят из сотрудников (анонимный мультиобъект «Сотрудник»). Рефлексивная связь указывает на тот факт, что менеджер отдела является в то же время и его сотрудником. Рис. 8. Графическое изображение связей с различными стереотипами Над линией связи может быть изображена стрелка с указанием названия сообщения и его порядкового номера. Необходимость номера сообщения объясняется очень просто — в отличие от диаграммы последовательностей, время на диаграмме взаимодействия не показывается в виде отдельного измерения. Поэтому последовательность передачи сообщений можно указать только с помощью их нумерации. При построении диаграммы кооперации сообщения имеют некоторые дополнительные семантические особенности. Сообщение на диаграмме кооперации специфицирует коммуникацию между двумя объектами, один из которых передает другому некоторую информацию. При этом первый объект ожидает, что после получения сообщения вторым объектом последует выполнение некоторого действия. Таким образом, именно сообщение является причиной или стимулом для начала выполнения операций, отправки сигналов, создания и уничтожения отдельных объектов. Связь обеспечивает канал для направленной передачи сообщений между объектами от объекта-источника к объекту-получателю. Рис. 9. Графическое изображение различных типов сообщений на диаграмме кооперации Сообщения в языке UML также специфицируют роли, которые играют объекты — отправитель и получатель сообщения. Сообщения на диаграмме кооперации изображаются помеченными стрелками рядом (выше или ниже) с соответствующей связью или ролью ассоциации. Направление стрелки указывает на получателя сообщения. Внешний вид стрелки сообщения имеет определенный смысл. На диаграммах кооперации может использоваться один из четырех типов стрелок для обозначения сообщений (рис. 9): Сплошная линия с треугольной стрелкой (рис. 9, а) обозначает вызов процедуры или другого вложенного потока управления. Может быть также использована совместно с параллельно активными объектами, когда один из них передает сигнал и ожидает, пока не закончится некоторая вложенная последовательность действий. Обычно все такие сообщения являются синхронными, т. е. инициируемыми по завершении некоторой деятельности или при выполнении некоторого условия. Сплошная линия с V-образной стрелкой (рис. 9, б) обозначает простой поток управления. Каждая такая стрелка изображает один этап в коопераций потока управления. Обычно все такие сообщения являются асинхронными. Сплошная линия с полустрелкой (рис. 9, в) используется для обозначения асинхронного потока управления. Соответствующие сообщения формируются в произвольные, заранее не известные моменты времени, как правило, активными объектами. Обычно сообщения этого типа являются начальными в коопераций потока управления и чаще всего инициируются актерами. Пунктирная линия с V-образной стрелкой (рис. 9, г) обозначает возврат из вызова процедуры. Стрелки этого типа зачастую отсутствуют на диаграммах кооперации, поскольку неявно предполагается их существование после окончания процесса активи- зации некоторой деятельности. Методика построения диаграммы коопераций Открыть файл UML, в котором выполняется построение модели. В проводнике по модели UML щелкнуть правой кнопкой мыши по папке «Основной пакет», выбрать команду меню «Создать» и далее «Схема взаимодействий». У рабочего листа MS Visio появится название «Совместная работа-1». Переименовать созданный лист, дав ему имя ДКп (сокращенно от «Диаграмма кооперации» – классическое название данной диаграммы в UML). Разместить на рабочем листе элемент «Роль классификатора». Далее щелкнуть по нему дважды, вызвав окно свойств и в поле «Классификатор» выбрать соответствующий класс из ранее созданных. Поскольку диаграммы кооперации чаще всего создаются для описания реализации некоторого варианта использования, то в качестве первого классификатора на диаграмме должен быть представлен Актер, который на диаграмме вариантов использования инициирует данный класс. Если к одному варианту использования направлены отношения ассоциации от нескольких актеров, то можно выбрать любого. Это обусловлено тем, что если два актера связаны с одним вариантом использования, то предполагается, что независимо от типа актера возможности реализации ВИ у них абсолютно одинаковые. В противном случае, если предполагается, что разным актерам предоставляются разные возможности при вызове одного ВИ, значит, на схеме необходимо представить два отдельных ВИ. При этом если эти ВИ имеет совпадающие функции, то их можно связать отношением расширения или включения. После выбора в качестве классификатора одного из актеров, внешний вид данного элемента изменится соответствующим образом. Разместить в необходимом количестве остальные классы, участвующие в реализации данного ВИ и соотнести их с соответствующими классами. Соединить классы между собой с помощью элемента «Роль ассоциации». Направление стрелки указывать не обязательно. Сопоставить сообщение, которое получает объект для исполнения с одной из его операций, заданной в предыдущей лабораторной работе. Для этого нужно вызвать окно свойств для ассоциации (дважды щелкнув по нему). В появившемся окне слева в разделе «Категории» выбрать «Сообщение». Далее нажать на кнопку «Свойства», и в появившемся окне в категории «Операция» выбрать из списка соответствующую операцию. Для того чтобы операция присутствовала в списке, она должна была быть задана для данного класса в предыдущей лабораторной работе. Можно добавить для класса необходимую операцию прямо из этого окна, если нажать на кнопку «Создать». Далее появится окно, уже описанное выше. Пример построения диаграммы коопераций Построим диаграмму коопераций для системы продажи товаров по каталогу (рис. 10). Для этого выберем основные объекты, определим сообщения и порядок их обмена между объектами. Порядок следования сообщений обозначается номером перед именем сообщения. Номер ставится в свойствах роли ассоциации UML (открывается двойным щелчком по линии связи), справа в Категориях выбирается «Сообщения», в таблице Сообщения номер выставляется в столбец «Выражение коопераций». Рис. 10. Диаграмма коопераций для системы продажи товаров по каталогу Задания для выполнения В соответствии с вариантом построить Диаграмму коопераций Варианты заданий Постройте диаграмму коопераций для процесса «Открытие филиала предприятия». Постройте диаграмму коопераций для процесса «Разработка нового вида продукции». Постройте диаграмму коопераций для процесса «Оказание услуг по предоплате». Постройте диаграмму коопераций для процесса «Получение услуг по договору». Постройте диаграмму коопераций для процесса «Закупка товарно-материальных ценностей с предоплатой по получении счета-фактуры поставщика». Постройте диаграмму коопераций для процесса «Выпуск изделий легкой промышленности» (разновидность – по своему выбору). Постройте диаграмму коопераций для процесса «Оптовая продажа товарно-материальных ценностей». Постройте диаграмму коопераций для процесса «Розничная продажа товарно-материальных ценностей». Постройте диаграмму коопераций для процесса «Замещение вакансии». Постройте диаграмму коопераций для процесса «Начисление и выплата зарплаты работникам предприятия за предыдущий месяц 11. Постройте диаграмму коопераций для процесса «Крупноузловая сборка автомобилей». 12. Постройте диаграмму коопераций для процесса «Анализ качества продукции». 13. Постройте диаграмму коопераций для процесса «Строительство производственного здания». 14. Постройте диаграмму коопераций для процесса «Предоставление полиграфических услуг». Уважаемые студенты, отчет о выполненном задании предоставить на эл. почту: dlja_ucheby20@mail.ru, в ответном письме в срок до 15-00 13.06.2021 г. На электронную почту необходимо прислать отчет о выполненном задании в формате MS Word, и диаграмму кооперации формате MS Visio. |