Проектирование на UML. Сборник задач - страница 18

Шрифт
Интервал


б. Используя вхождения коопераций Sale, создайте модель кооперации продажи с посредником BrokeredSale, в которой покупатель взаимодействует с посредником Broker, а посредник как покупатель взаимодействует с продавцом.

3.2. Моделируется серверная часть веб-приложения интернет-магазина, построенного на основе паттерна Model-View-Controller (MVC). Взаимодействие между ролями Model, View и Controller отобразим на диаграмме последовательности.

а. Разместите на диаграмме роли Controller, Model, а также роль типа ORM с именем db. Синхронное найденное сообщение postBuy (purchase) приходит на линию жизни Controller. После этого Controller посылает Model синхронное сообщение addPurchase (purchase). В ответном сообщении Model возвращает объект purchaseDetails.

б. Реализуем на диаграмме поведение Model в ответ на сообщение addPurchase. Model посылает синхронное сообщение addPurchase (purchase) линии жизни db. Затем открывается фрагмент alt. При условии purchase.needDeliveryModel посылает сообщение addDelivery(purchase.address) линии жизни db. Фрагмент alt окончен. Model посылает db синхронное сообщение saveChanges ().

в. В ответ на запрос покупки Controller должен сообщить пользователю, что заказ совершен успешно. После получения от Model ответного сообщения Controller создает новую линию жизни с ролью View сообщением createConfirmationView. Затем Controller посылает линии жизни View сообщение setPurchaseDetails (purchaseDetails). Затем Controller отправляет в ответ на входящий запрос ответное сообщение, содержащее View.

г. Отдел доставки нужно уведомить о том, что требуется доставить новый заказ. Добавим в Model (в опциональный фрагмент alt) посылку асинхронного сообщения notifyNewDelivery. Сообщение является потерянным.

д. Код интернет-магазина достаточно универсальный. Можно сделать на базе этого кода несколько сайтов для разных магазинов. Для этого нужно заполнить View при создании информацией о конкретном магазине. Добавим в контекст взаимодействия переменную shopInfo типа ShopInformation. После сообщения setPurchaseDetails начинается фрагмент использования взаимодействия ref с именем FillShopInformation. В этот фрагмент входят линии жизни Controller и View. В виде аргумента во взаимодействие передается переменная shopInfo.