
- •1. Что такое диаграмма последовательностей
- •Объекты
- •Сообщения
- •2. Графический интерфейс пользователя (gui)
- •Последовательность
- •Диаграмма последовательности
- •Прецедент
- •3. Автомат по продаже лимонада: общая и частная модель
- •Частная диаграмма последовательности
- •Общая диаграмма последовательности
- •4. Отображение создания объекта на диаграмме последовательностей
- •5. Представление рекурсии
- •6. Создание общей картины
- •7. Резюме
- •Вопросы и ответы
- •Задание
Общая диаграмма последовательности
Напомним, что прецедент Покупка лимонада содержит два дополнительных сценария. Один связан с отсутствием лимонада выбранного сорта. Другой выполняется, если покупатель ввел неточную стоимость покупки. Если при создании диаграммы последовательности учитываются все сценарии прецедента, она называется общей диаграммой последовательностей.
Построим общую диаграмму последовательностей. Для этого нужно учесть потоки управления, т.е. указать условия и последовательности действий для дополнительных сценариев.
Дополнительный сценарий, реализуемый при вводе неточной суммы денег, включает следующую последовательность действий.
1. Реестр проверяет, соответствует ли введенная покупателем сумма цене лимонада.
2. Если сумма больше цены, реестр вычисляет причитающуюся сдачу и проверяет резерв наличности.
3. Если сдача имеется, реестр возвращает сдачу покупателю, и выполняются все действия основного сценария.
4. Если нет сдачи, реестр возвращает введенную сумму и. выводит сообщение о необходимости внести точную сумму.
5. Если уплаченная сумма меньше цены, реестр не выполняет никаких действий, и автомат ожидает ввода дополнительной суммы.
При разработке реального автомата по продаже лимонада следует спроектировать решение для выполнения пункта 5. Можно спроектировать автомат так, чтобы он подождал некоторое время, вычислил разность между ценой и введенной суммой и отобразил сообщение, приглашающее покупателя добавить недостающую сумму.
Принятое решение должно также давать ответы на следующие вопросы. Сколько такое решение будет стоить для клиента и во сколько обойдется технология, его реализующая?
Это хороший пример упорядочивания процесса анализа с помощью диаграммы последовательности.
Чтобы представить все возможные варианты событий, на диаграмме последовательности в квадратных скобках указывают условие передачи сообщения. На рис. 8 над линиями соответствующих сообщений — условия [ввод > цена], [есть сдача], [нет сдачи] и т.д.
Каждое условие вызывает передачу управления в сообщении, то есть обработка сообщения может производиться двумя путями. Сообщения могут передаваться одному и тому же объекту. Чтобы учесть эту возможность, линия жизни объекта-получателя разветвляется. В некоторой точке последовательности ветви обработки сообщения, как и ветви линии жизни объекта, могут сливаться.
На рис. 8 представлена диаграмма последовательностей с учетом дополнительного сценария.
Рис. 8. Диаграмма последовательностей после добавления дополнительного сценария прецедента Покупка лимонада
Рассмотрим другой дополнительный сценарий, запускаемый при отсутствии выбранного сорта лимонада.
1. Если покупатель выбрал отсутствующий сорт, автомат отображает сообщение "Нет лимонада".
2. Автомат выводит сообщение с предложением покупателю сделать другой выбор.
3. Покупатель имеет возможность нажать кнопку возврата денег.
4. Если покупатель выберет имеющийся в наличии сорт лимонада и введет точную стоимость покупки, действия будут развиваться по основному успешному сценарию. Если же сумма не соответствует стоимости лимонада, автомат следует первому дополнительному сценарию, связанному с неточной оплатой.
5. Если покупатель выберет другой отсутствующий сорт лимонада, процесс будет повторяться до выполнения успешного сценария или возврата денег.
На рис. 9 показана общая диаграмма последовательностей автомата по продаже лимонада со всеми дополнительными сценариями.
Рис. 9. Общая диаграмма последовательностей для автомата по продаже лимонада со всеми дополнительными сценариями
Если читателю ясно, что за каждым прецедентом стоит диаграмма последовательностей, он правильно понял основную идею.