Диаграмма взаимодействия (interaction diagrams) описывают поведение взаимодействующих групп объектов. Как правило, диаграммы взаимодействия охватывают поведение объекта только в рамках одного варианта использования. На такой диаграмме отображается ряд объектов и те сообщения, которыми они обмениваются между собой. Существует два вида диаграмм взаимодействия: это диаграммы последовательности и кооперативные диаграммы. Диаграммы последовательности отражают временную последовательность событий, происходящих в рамках варианта использования, а кооперативные диаграммы концентрируют внимание на связях между объектами. Диаграмма последовательности (sequence diagram) -- это диаграмма взаимодействия, в которой основной акцент сделан на упорядочивании взаимодействий во времени. Диаграмма последовательности характеризуется двумя особенностями, отличающими её от диаграмм кооперации: линия жизни объекта и фокус управления. Объекты На диаграмме последовательности изображаются исключительно те объекты, которые непосредственно участвуют во взаимодействии, и не показываются возможные статические ассоциации с другими объектами. Если имя объекта отсутствует на диаграмме последовательности, то указывается только имя класса, а сам объект считается анонимным. 9 _:имя актёра_ [_имя_объекта1_] [_ИмяОбъекта2:Имя класса_] [_:имя класса 3_] | | | 1 <> | +-------------------->++2: это синх. сооб. ++{время ожидания < 5 мин.} ||-------------------->|| | | || |++ || ||| | | || |++ || ++ | | || | 6 <> || ++ | +--------------------->++ || ||| || | | |++ ++ ++ | | X X Линия жизни объекта -- это вертикальная пунктирная линия, отражающая существование объекта во времени. Если объект существует на протяжении всего взаимодействия, то его изображают в верхней части диаграммы, а его линия жизни прорисована сверху донизу. Если объект был создан во время взаимодействия, линия жизни начинается с получения сообщения. Если объект уничтожить во время взаимодействия, то его линия жизни тоже заканчивается с получением сообщения. Фокус управления -- вытянутый прямоугольник, который показывает промежуток времени, в течение которого объект выполняет какое-нибудь действие -- непосредственно или с помощью какой-либо процедуры. Периоды активности объекта могут чередоваться с периодами его пассивности или ожидания, в этом случае у объекта будет несколько фокусов. Получить фокус управления может только существующий объект, у которого в момент управления была линия жизни. Уничтоженный объект повторно быть создан не может, вместо него может быть создан новый объект того же класса. Чаще всего актёр и его фокус управления будут существовать в системе постоянно. Актёр может иметь собственное имя или оставаться анонимным. Сообщения Фокус сообщения представляет собой законченный фрагмент информации, который отправляется одним объектом другому. При этом приём сообщения инициирует выполнение определённых действий, направленных на выполнение определённых задач тем объектом, которому это сообщение отправлено. На диаграмме взаимодействия все сообщения упорядочены по времени своего возникновения в моделируемой системе. В таком контексте каждое сообщение имеет направление от объекта, который инициирует и отправляет сообщение, к объекту, который его получает. Стереотипы сообщений: massage: 1 < -- synchronous (синхронное сообщение, требующее возврата ответа); 2 <> (лучше применять сообщения возврата тогда, когда лучше понять изображение взаимодействия, в остальных случаях следует опускать прямое изображение возарата); 3 <> -- послать асинхронное сообщение: ответы не требуются и вызываемый объект может продолжать работу); 4 <>; 5 <> Временные ограничения на диаграммах последовательности В отдельных случаях выполнение тех или иных действий может потребовать явных спецификаций временных ограничений, накладываемых на интервал операции или передачи сообщения. В UML для этого используются фигурные скобки. Комментарии или примечания Они могут включаться и в диаграмму последовательности, ассоциируясь с отдельными объектами или сообщениями: +----------+-+ Внутри этого прямоугольника записывается текст с комментарием на естественном языке. | \| | + +------------+ Моделирование процесса телефонного разговора с использованием обычной телефонной сети Объектами в этом примере будут являться два абонента (A и B) 9 9 _a: Абонент_ [_c:Тел. аппар._] [_:Коммутатор_] [_d:Тел. аппар._] _b: Абонент_ ++Поднять тр.() | Тон сигнала() ++ | | |+--------------->++-----+ || ||I[i=1..n] || | || | | ||Набор цифр(i) ||<----+ || |+--------------->||Набор Номера()|| [номер полный] | | || |+------------->||Вызов Абонента() Звонок() || || |+---------------->++-------+ | || || || || | | || || || ||<------+ | || || ||создать ||Подн. трубку()| || || |+->[Разговор] ||<-------------++ || || || | ||Начать разг.()|| |+----------------++--------------++------> <--------++--------------+| || || || | ||Завер. разг.()|| || || ||унич. <--------++--------------+| || || |+------>| || || ||пов. т.() || || X || || |+--------------->++ || X || || ++ || ++ ++