Дано: клиент
И ресторан
И адрес/время доставки из этого ресторана
И суммарная цена заказа, отвечающая среднему показателю ресторана
Когда клиент размещает заказ
Тогда банковская карта клиента авторизуется
И создается заказ в состоянии PENDING_ACCEPTANCE
И заказ привязывается к клиенту
И заказ привязывается к ресторану
Имена существительные в этом пользовательском сценарии указывают на существование различных классов, включая Consumer (клиент), Order (заказ), Restaurant (ресторан) и CreditCard (банковская карта).
Точно так же историю приема заказа можно развернуть в сценарий наподобие следующего:
Дано: заказ в состоянии PENDING_ACCEPTANCE
И курьер, доступный для доставки заказа
Когда ресторан принимает заказ с обязательством приготовить еду к заданному времени
Тогда состояние заказа меняется на ACCEPTED
И полю заказа promiseByTime назначается заданное время
И курьер назначается для доставки заказа
Этот сценарий подразумевает существование классов Courier (курьер) и Delivery (доставка). После нескольких этапов анализа итоговым результатом будет доменная модель, состоящая, как и ожидалось, из этих и других классов, таких как MenuItem (пункт меню) и Address (адрес). Схема с ключевыми классами показана на рис.