- •1. Что такое диаграмма последовательностей
- •Объекты
- •Сообщения
- •2. Графический интерфейс пользователя (gui)
- •Последовательность
- •Диаграмма последовательности
- •Прецедент
- •3. Автомат по продаже лимонада: общая и частная модель
- •Частная диаграмма последовательности
- •Общая диаграмма последовательности
- •4. Отображение создания объекта на диаграмме последовательностей
- •5. Представление рекурсии
- •6. Создание общей картины
- •7. Резюме
- •Вопросы и ответы
- •Задание
Последовательность
Предположим, что пользователь GUI нажимает любую буквенно-цифровую клавишу на клавиатуре. Будем считать, что он работает с текстовым редактором, поэтому вводимый символ сразу же отображается на экране. Что происходит при выводе символа на экран?
1. GUI-интерфейс оповещает операционную систему о нажатии клавиши.
2. Операционная система оповещает центральный процессор (CPU).
3. Операционная система обновляет GUI.
4. Центральный процессор направляет уведомление об этом событии видеокарте.
5. Видеокарта отправляет сообщение монитору.
6. Монитор выводит символ на экран, обеспечивая тем самым обратную связь с пользователем.
Эта последовательность действий выполняется так быстро, что ее можно не заметить. (Даже если знаешь о них!)
Диаграмма последовательности
На рис. 4 представлена диаграмма последовательности для графического интерфейса. Как видно из рисунка, все сообщения являются асинхронными, поскольку ни один из компонентов не ожидает выполнения каких-либо действий от другого. Пользователи Windows сталкивались с эффектами асинхронного взаимодействия, особенно на медленно работающих компьютерах. При наборе текста в редакторе результат нажатия клавиш иногда не сразу отображается на экране, а лишь после нажатия нескольких клавиш.
Рис. 4. Диаграмма последовательностей, показывающая взаимодействие GUI с другими объектами
На диаграмме последовательности иногда требуется показать состояния одного или нескольких объектов. Это нетрудно сделать, поскольку о состояниях GUI говорилось в предыдущей главе. На рис. 5 изображена смешанная диаграмма — диаграмма последовательности GUI с его состояниями. Заметим, что, как и следовало ожидать, последовательность начинается и заканчивается в состоянии GUI Работа.
Рис. 5 На диаграмме последовательности можно отобразить состояния объекта
На диаграмме последовательности можно показать изменение состояния объекта.
Прецедент
Что же представляет собой диаграмма последовательностей? В рассматриваемом примере она показывает взаимодействие объектов при выполнении простого сценария, инициированного нажатием клавиши. Этот сценарий может быть частью прецедента Нажатие клавиши (рис. 6). Поскольку диаграмма последовательности отражает взаимодействие объектов во время реализации прецедента, то она по существу является представлением прецедента в системе.
В дальнейшем взаимосвязь между прецедентами и диаграммами последовательностей будет рассмотрена более подробно.
Рис. 6. Прецедент, описываемый диаграммой последовательности на рис. 4
3. Автомат по продаже лимонада: общая и частная модель
Предыдущий пример начинался с построения диаграммы состояний. Постараемся создать сначала модель прецедентов. Одним из прецедентов в модели автомата по продаже лимонада является Покупка лимонада. (Этот пример описан в предыдущих лабораторных работах).
Частная диаграмма последовательности
В основном сценарии прецедента Покупка лимонада исполнителем является покупатель, который хочет купить стакан лимонада. Покупатель инициирует сценарий, помещая монету в автомат. Затем он выбирает марку лимонада. Поскольку речь идет об основном успешном сценарии, в автомате имеется, по крайней мере, один стакан лимонада нужного сорта, который и предлагается покупателю.
Предположим, что в реализации этого сценария участвуют три объекта: лицевая панель (интерфейс пользователя автомата по продаже лимонада), реестр для сбора монет, а также отсек для хранения лимонада и его передачи на лицевую панель. Предположим также, что реестр управляет отсеком. Последовательность действий по реализации сценария будет следующей.
1. Покупатель помешает монету в щель на лицевой панели автомата.
2. Покупатель выбирает сорт лимонада.
3. Монета попадает в реестр.
4. Для рассматриваемого основного сценария считаем, что нужный сорт лимонада имеется, и реестр дает команду отсеку доставить лимонад к лицевой панели автомата.
Поскольку соответствующая диаграмма последовательностей описывает только один сценарий прецедента Покупка лимонада, она называется частной диаграммой последовательности (instance sequence diagram). Эта диаграмма показана на рис. 7. Отметим, что на ней изображены простые сообщения. Каждое сообщение передает управление от одного объекта к другому.
Рис. 7. Эта диаграмма последовательности моделирует только основной сценарии прецедента Покупка лимонада.
