Лекция 5 - диаграммы взаимодействия.ppt
- Количество слайдов: 26
Тема цикла: “Групповая работа над проектом”. Диаграммы взаимодействия
Диаграмма последовательности. Основные положения. В языке UML взаимодействие элементов рассматривается в информационном аспекте их коммуникации, т. е. взаимодействующие объекты обмениваются между собой некоторой информацией. При этом информация принимает форму законченных сообщений. Т. е. сообщение имеет не только информационное содержание, но и приобретает дополнительное свойство оказывать направленное влияние на своего получателя. Это согласуется с принципами ООАП, когда любые виды информационного взаимодействия между элементами системы должны быть сведены к отправке и приему сообщений между ними. 1. Для представления временных особенностей передачи и приема сообщений между объектами используется диаграмма последовательности. 2. Для описания структурных особенностей взаимодействия объектов используется диаграмма кооперации.
Диаграмма последовательности. Объекты. На диаграмме последовательности изображаются исключительно те объекты, которые непосредственно участвуют во взаимодействии и не показываются возможные статические ассоциации с другими объектами. Для диаграммы последовательности ключевым моментом является именно динамика взаимодействия объектов во времени. Диаграмма условно имеет два измерения. Первое — слева направо в виде вертикальных линий, каждая из которых изображает линию жизни отдельного объекта, участвующего во взаимодействии. Второе — вертикальная временная ось, направленная сверху вниз. Начальному моменту времени соответствует самая верхняя часть диаграммы. Сообщения изображаются в виде горизонтальных стрелок с именем сообщения и также образуют порядок по времени своего возникновения. Другими словами, сообщения, расположенные на диаграмме последовательности выше, инициируются раньше тех, которые расположены ниже.
Диаграмма последовательности. Объекты. Графически каждый объект изображается прямоугольником и располагается в верхней части своей линии жизни. Внутри прямоугольника записываются имя объекта и имя класса, разделенные двоеточием. При этом вся запись подчеркивается, что является признаком объекта, который, как известно, представляет собой экземпляр класса. Крайним слева на диаграмме изображается объект, который является инициатором взаимодействия. Правее изображается объект, который непосредственно взаимодействует с первым. Все объекты на диаграмме последовательности образуют некоторый порядок, определяемый степенью активности этих объектов при взаимодействии друг с другом.
Диаграмма последовательности. Линия жизни объекта (object lifeline) изображается пунктирной вертикальной линией, ассоциированной с единственным объектом на диаграмме последовательности. Линия жизни служит для обозначения периода времени, в течение которого объект существует в системе и, следовательно, может потенциально участвовать во всех ее взаимодействиях. Отдельные объекты, выполнив свою роль в системе, могут быть уничтожены (разрушены), чтобы освободить занимаемые ими ресурсы. Отдельные объекты в системе могут создаваться по мере необходимости, существенно экономя ресурсы системы и повышая ее производительность.
Диаграмма последовательности. Фокус управления. В процессе функционирования объектно ориентированных систем одни объекты могут находиться в активном состоянии, непосредственно выполняя определенные действия или в состоянии пассивного ожидания сообщений от других объектов. Чтобы явно выделить подобную активность объектов, применяется специальное понятие фокус управления (focus of control). Периоды активности объекта могут чередоваться с периодами его пассивности или ожидания. В этом случае у такого объекта будет несколько фокусов управления. Получить фокус управления может только существующий объект. Если объект был уничтожен, то вновь возникнуть в системе он уже не может.
Диаграмма последовательности. Фокус управления. В отдельных случаях инициатором взаимодействия в системе может быть актер или внешний пользователь. В этом случае актер изображается на диаграмме последовательности самым первым объектом слева со своим фокусом управления. Иногда некоторый объект может инициировать рекурсивное взаимодействие с самим собой. Речь идет о том, что наличие во многих языках программирования специальных средств построения рекурсивных процедур требует визуализации соответствующих понятий в форме графических примитивов.
Диаграмма последовательности. Сообщения. Определение. Цель взаимодействия в контексте языка UML заключается в том, чтобы специфицировать коммуникацию между множеством взаимодействующих объектов. Каждое взаимодействие описывается совокупностью сообщений, которыми участвующие в нем объекты обмениваются между собой. В этом смысле сообщение (message) представляет собой законченный фрагмент информации, который отправляется одним объектом другому. При этом прием сообщения инициирует выполнение определенных действий, направленных на решение отдельной задачи тем объектом, которому это сообщение отправлено. Отправителя сообщения клиент, а получатель — сервер. При этом сообщение от клиента имеет форму запроса некоторого сервиса, а реакция сервера на запрос после получения сообщения может быть связана с выполнением определенных действий или передачи клиенту необходимой информации тоже в форме сообщения.
Диаграмма последовательности. Сообщения. Виды. 1. 2. 3. 4. Первая разновидность сообщения (а) наиболее распространенная. Используется для вызова процедур, выполнения операций или обозначения отдельных вложенных потоков управления. Вторая разновидность сообщения (б) используется для обозначения простого (не вложенного) потока управления. Указывает на прогресс одного шага потока. Третья разновидность (в) явно обозначает асинхронное сообщение между двумя объектами в некоторой процедурной последовательности. Последняя разновидность сообщения (г) используется для возврата из вызова процедуры. Примером может служить простое сообщение о завершении некоторых вычислений без предоставления результата расчетов объекту клиенту.
Диаграмма последовательности. Ветвление потока управления. Для изображения ветвления рисуются две или более стрелки, выходящие из одной точки фокуса управления объекта. При этом соответствующие условия должны быть явно указаны рядом с каждой из стрелок в форме сторожевого условия. Если эта сумма превышает $1000, то могут потребоваться дополнительные действия, связанные с созданием и последующим разрушением Объекта_4. Если же сумма превышает $50, но не превышает $1000, то управление передается Объекту_3. И, наконец, если сумма не превышает $50, то управление получает Объект_2.
Диаграмма последовательности. Стереотипы сообщений. В языке UML предусмотрены некоторые стандартные действия, выполняемые в ответ на получение соответствующего сообщения. Они могут быть явно указаны на диаграмме последовательности в форме стереотипа рядом с сообщением, к которому они относятся. "call" (вызвать) — сообщение, требующее вызова операции или процедуры принимающего объекта. "return" (возвратить) — сообщение, возвращающее значение выполненной операции или процедуры вызвавшему ее объекту. "create" (создать) — сообщение, требующее создания другого объекта для выполнения определенных действий. Созданный объект может получить фокус управления, а может и не получить его "destroy" (уничтожить) — сообщение с явным требованием уничтожить соответствующий объект. "send" (послать) — обозначает посылку другому объекту некоторого сигнала, который асинхронно инициируется одним объектом и принимается (перехватывается) другим.
Диаграмма последовательности. Пример построения диаграммы. В качестве примера рассмотрим построение диаграммы последовательности для моделирования процесса телефонного разговора с использованием обычной телефонной сети. Необходимо расположить выбранные объекты. Абонентов следует рассматривать как актеров, — а — играет активную роль, а b — пассивную. Поэтому первый получает фокус управления сразу после своего появления в системе, а второй имеет только линию жизни. Коммутатор имеет постоянную активность. Разговор появляется только после установки соединения и уничтожается с его прекращением.
Диаграмма последовательности. Пример построения диаграммы.
Диаграмма кооперации. Назначение. Особенности взаимодействия элементов моделируемой системы могут быть представлены на диаграммах последовательности и кооперации. Если первая служит для визуализации временных аспектов взаимодействия, то диаграмма кооперации предназначена для спецификации структурных аспектов взаимодействия. Главная особенность диаграммы кооперации заключается в возможности графически представить не только последовательность взаимодействия, но и все структурные отношения между объектами, участвующими в этом взаимодействии. Понятие кооперации (collaboration) является одним из фундаментальных понятий в языке UML. Оно служит для обозначения множества взаимодействующих с определенной целью объектов в общем контексте моделируемой системы. Кооперация может быть представлена на двух уровнях: На уровне спецификации — показывает роли классификаторов и роли ассоциаций в рассматриваемом взаимодействии. На уровне примеров — указывает экземпляры и связи, образующие отдельные роли в кооперации.
Диаграмма кооперации. Объекты. Мультиобъекты Применительно к объектам формат строки специфицирования приобретает следующий вид: <Имя объекта>' / ' <Имя роли класса> ': ' <Имя класса> При этом вся запись подчеркивается. Мультиобъект (multiobject) представляет собой целое множество объектов на одном из концов ассоциации. На диаграмме кооперации Мультиобъект используется для того, чтобы показать операции и сигналы, которые адресованы множеству объектов, а не только одному их представителю.
Диаграмма кооперации. Активные объекты. Мультиобъекты Активный объект (active object) имеет свою собственную нить (thread) управления и может инициировать деятельность по управлению другими объектами.
Диаграмма кооперации. Составной объект (composite object) или объект контейнер предназначен для представления объекта, имеющего собственную структуру и внутренние потоки (нити) управления. Составной объект является экземпляром составного класса (класса контейнера), который связан отношением агрегации или композиции со своими частями. Аналогичные отношения связывают между собой и соответствующие объекты.
Шаблоны. Шаблон “Expert”. Буч и Румбах определяют обязанность (responsibility) как "контракт или обязательство типа или класса" Вопрос. Каков наиболее общий принцип распределения обязанностей между классами при объектно ориентированном проектировании? Решение. Назначить обязанность информационному эксперту — классу, у которого имеется информация, требуемая для выполнения обязанности. ПРИМЕР. В приложении системы розничной торговли некоторому классу необходимо знать общую сумму продажи. Вопрос. Какой класс должен отвечать за знание общей суммы продажи? Решение. Согласно шаблону Expert нужно определить, объекты каких классов содержат информацию, необходимую для вычисления общей суммы продажи.
Шаблоны. Шаблон “Expert”.
Шаблоны. Шаблон “Expert”. Необходимо узнать стоимость всех Позиций продажи Sales. Lineltem и просуммировать эти промежуточ ные суммы. Такой информацией обладает лишь экземпляр класса Sale (Продажа). Следовательно, с точки зрения шаблона Expert объект класса Sale (Продажа) подходит для выполнения этой обязанности, т. е. является информационным экспертом (information expert).
Шаблоны. Шаблон “Expert”. Однако на данном этапе выполнена не вся работа. Необходимы значения атрибутов Sales. Lineltem. quantity (Позиция. Продажи. количество) и Sales. Lineltem. price (Позиция. Продажи. цена). Объекту класса Sales. Lineltem(Позиция. Продажи) известно количество товара и связанный с ним объект класса Product. Specification (Описание. Товара). Следовательно, в соответствии с шаблоном Expert промежуточную сумму должен вычислять объект класса Sales. Lineltem (Позиция. Продажи). Другими словами, на данном этапе рассмотрения объект этого класса является информационным экспертом. В терминах диаграмм взаимодействий это означает, что объект класса Sale (Продажа) должен передать сообщение subtotal (промежуточная сумма) каждому объекту класса Sales. Lineltem (Позиция. Продажи), а затем просуммировать по лученныерезультаты. Этот процесс проиллюстрирован на следующем слайде.
Шаблоны. Шаблон “Expert”.
Шаблоны. Шаблон “Expert”. Для выполнения обязанности, связанной со знанием и предоставлением промежуточной суммы, объекту класса Sales. Lineltem должна быть известна стоимость товара. В данном случае в качестве информационного эксперта будет выступать объект класса Product. Specification (Описание. Товара). В завершение можно сказать следующее. Для выполнения обязанности знать и предоставлять общую сумму продажи трем классам были присвоены три обязанности. 1. Sale Знание общей суммы продажи 2. Sales. Lineltem Знание промежуточной суммы 3. Product. Specification Знание стоимости товара
Шаблоны. Шаблон “Expert”.
Использование шаблонов.
Использование шаблонов.
Лекция 5 - диаграммы взаимодействия.ppt