- •Стратегии «Руководство по основным действиям и компонентам».
- •Стратегии идентификации назначения и характерных свойств системы
- •Описание примера: Магазин (приложение для торгового терминала)
- •1.4.1. Идентификация назначения системы
- •1.4.2. Идентификация характерных свойств системы
- •Определение средств регистрации важной информации
- •Определение средств ведения бизнеса
- •Определение средств анализа результатов бизнеса
- •Определение средств взаимодействия с другими системами
- •Замечания по поводу назначения и характерных свойств системы
- •1.5. Выбор объектов
- •1.5.1. Использование компонентов модели для организации работы
- •1.5.2. Выбор объектов проблемной области
- •Выбор актеров и участников
- •1.6. Применение образцов: выбор и упорядочивание объектов проблемной области
- •1.6.1. Участник-транзакция
- •1.6.2. Место-транзакция
- •1.6.3. Транзакция - следующая транзакция
- •1.6.4. Контейнер-содержимое
- •1.6.5. Транзакция-экземпляр строки транзакции
- •1.6.6. Актер-участник
- •1.6.7. Общая схема на данный момент
- •1.7. Применение стратегий для определения обязанностей объектов проблемной области
- •1.7.1. Обязанности актеров и участников Актер: человек
- •Участник: кассир
- •Участник: покупатель.
- •1.7.2. Обязанности мест Магазин
- •1.7.3. Обязанности реальных вещей
- •Экземпляр товара
- •Универсальный код товара upc
- •Описание каждого атрибута
- •Регистрирующее устройство
- •Ящик кассового аппарата
- •Важное замечание по поводу состояния операции
- •Категория налога
- •1.7.4. Обязанности транзакций проблемной области
- •Продажа
- •Экземпляр строки продажи
- •Описание каждой службы
- •Новый вариант экземпляра строки продажи
- •Что совпадает, а что отличается Оплата и ее виды
- •1.8. Применение образцов: определение обязанностей в проблемной области
- •Множество-рабочий
- •Участник-транзакция
- •Транзакция-экземпляр строки транзакции
- •Экземпляр товара-экземпляр строки
- •Общая схема на данный момент
- •1.9. Разработка динамики проблемной области с помощью сценариев
- •1.9.1. Выбор ключевых сценариев
- •1.9.2. Сценарий: вычисление общей суммы при продаже
- •1.10. Выбор объектов взаимодействия с человеком
- •1.10.1. Выбор окон
- •1.10.2. Выбор отчетов
- •1.11. Определение обязанностей для взаимодействия с человеком
- •1.11.1. Обязанности для окон
- •Окно регистрации
- •Окно продажи
- •1.11.2. Обязанности отчетов Получение денег
- •1.12. Разработка динамики взаимодействия с человеком с помощью сценариев
- •1.12.1. Поиск имеющих смысл сценариев взаимодействия с человеком
- •Сценарий: регистрация в системе
- •Сценарий: провести продажу
- •1.13.2. Взаимодействие в данной системе
- •1.13.3. Определение обязанностей для взаимодействия систем
- •1.13.4. Множество систем авторизации
- •1.13.5. Разработка динамики взаимодействия систем с помощью сценариев
- •1.14. Выбор объектов управления данными и их обязанностей
- •1.14.1. Поиск
- •1.14.2. Сохранение
- •1.14.3. Разработка динамики управления данными с помощью сценариев
- •1.15. Общая схема на данный момент
1.7.3. Обязанности реальных вещей
Определим обязанности реальных вещей в магазине:
— экземпляра товара:
— регистрирующего устройства;
кассира;
а также
— категории налога.
Экземпляр товара
А. Определение обязанностей; "что я знаю".
Реальный экземпляр товара характеризуется его номером, описанием, универсальным торговым кодом (UPC), сроком годности, ценой и указанием, облагается ли он налогом.
Объект item (экземпляр товара) "знает" значения своих атрибутов (рис. 1.25):
— номера;
— описания;
— универсальных кодов товара (UPC);
— цен;
— обложения налогом (облагается или нет).
Рис. 1.25. Экземпляр товара: "что я знаю'
Некоторые из этих атрибутов имеют повторяющиеся значения. Это хороший повод для поиска дополнительных объектов.
Универсальный код товара upc
Объект item потенциально знает множество значений UPC. Применение атрибута, имеющего ряд повторяющихся значений, не составляет проблемы.
#64. Стратегия"Атрибуты с повторяющимися значениями" |
• Атрибут может иметь несколько значений. • Добавьте к модели новый класс и связь между объектами. Найдите дополнительные атрибуты, которые можно применять. Добавьте новый класс, даже если в настоящий момент он имеет всего один атрибут. Это позволит провести разбиение большей части проблемной области и облегчить будущие изменения. • Пример: экземпляр товара с атрибутом UPC. Добавьте к модели класс UPC и связь между этим экземпляром и его UPC. |
Если есть возможность иметь атрибуты для каждого повторяющегося значения, следует расщепить то, что описывается как другой класс модели (применить относящееся к данной области разбиение). Добавьте новый класс, даже если в настоящий момент он имеет всего один атрибут. Проведенное в модели разбиение окажется полезным, если возникнет необходимость в дополнительных атрибутах и службах.
В данном случае повторяющимся значением является UPC. Экземпляр товара в магазине X может соответствовать множеству определенных производителем кодов UPC. Стоит ли иметь потенциальное множество атрибутов для каждого UPC? Несомненно. UPC можно описать его кодом, изображением, именем автора и датой первого применения.
Предположим, что интересен только сам UPC. Тогда добавим к модели класс UPC с атрибутом "upc".
Нужна также связь между объектами. Экземпляр товара знает свои объекты UPC, а объект UPC знает свои экземпляры товара. Соедините item и UPC связью между объектами (рис. 1.26).
Рис. 1.26. Обнаружение дополнительных объектов и обязанностей
Цена
Объект itemзнает множество цен. Не верите? Проверим вместе сX.
А. Расскажите мне о ценах экземпляра товара.
X. Экземпляр товара имеет регулярную цену. Начиная с даты появления товара, мы следим за прошлыми, настоящими и будущими регулярными ценами. Кроме того, экземпляр товара иногда имеет отпускную цену, действительную с даты появления товара до истечения срока его годности, и за этими ценами мы также следим. Для наших покупателей мы устанавливаем лучшую на момент покупки цену.
A. Планируете ли вы цены заранее? Когда вы хотите добавить их к системе?
X. Да, мы планируем их заранее и вводить их в систему тоже нужно заранее.
Что это все значит для объектной модели? Экземпляр товара знает объекты своей цены. Экземпляр товара знает свои регулярные цены (цену и дату появления)
Экземпляр товара знает свои отпускные цены (цену, дату появления и дату истечения срока годности).
К модели нужно добавить класс price с атрибутами:
— цена;
— дата появления;
а также класс ограничения promo price с атрибутами:
— цена;
— дата появления;
— дата истечения срока годности.
Класс ограничения наследует атрибуты, связи, службы и сообщения, относящиеся к его классу обобщения. Структура типа gen- specпоказывает, что совпадает, а что отличается.
Одинаковы:
— цена;
дата появления.
Отличаются:
— даты истечения срока годности.
Дату истечения срока годности нужно добавить к модели. Экземпляр товара знает свои объекты price, а объект price знает свой экземпляр товара, поэтому объекты item и price нужно соединить связью (рис. 1.26).