- •Стратегии «Руководство по основным действиям и компонентам».
- •Стратегии идентификации назначения и характерных свойств системы
- •Описание примера: Магазин (приложение для торгового терминала)
- •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. 33).
Рис.1. 33. Экземпляр строки продажи: «что я знаю, кого о знаю, что я делаю»
Описание каждой службы
Правильно выбранное имя службы весьма эффективно описывает ее сущность. В некоторых случаях можно ввести описание службы, т.к. иногда нужно знать, для чего именно она предназначена.
#116. Стратегия "Описание служб с помощью шаблона" |
• Опишите каждую службу с помощью шаблона: параметры ввода и вывода описание (включая псевдокод или реальный код, детализация применяемого алгоритма) коды ссылок на предшествующую документацию, если такая существует возможность просмотра: общий, защищенный, частный. |
Рассмотрим, что именно нужно для описания служб "calculatetotal" для продажи и экземпляра строки продажи. Применяя структурный псевдокод, можно составить следующее описание:
sale.calcTotal (; total)
calcSubtotal (; subtotal)
calcDiscount (subtotal ; discount)
total = subtotal - discount
calcTax (total ; tax)
total = total + tax
sale.calcSubtotal (; subtotal)
subtotal = 0
for each saleLineItcm that I know:
saleLincItem. calcSubtotal (; lineltemTotal)
subtotal = subtotal + UneItemTotal.
Новый вариант экземпляра строки продажи
Экземпляр строки продажи может относиться и к продаже, и к возврату. Проверим, нужна ли подобная специализация этого экземпляра. Класс обобщения показывает то, что остается тем же самым, а класс ограничения — что изменяется. Рассмотрим, что сохраняется, а что отличается в нашем случае. В частности, для каждого вида транзакции выясним, чем можно управлять, а что в данной ситуации неуправляемо.
Процесс покупки достаточно легко управляется: есть экземпляр товара, который хочет приобрести покупатель. Трудности возникают с возвратом: для экземпляра товара появляется вообще неуправляемая или слабо управляемая ситуация. При этом возможны всякие неожиданности, например:
— Покупатель может вернуть экземпляр товара не там, где он его купил.
— Покупатель может вернуть экземпляр товара, имевший другую цену на момент его покупки.
— Покупатель может вернуть экземпляр товара, которого у Х уже нет.
— Покупатель может вернуть экземпляр товара с особой маркировкой, возможно отмечающей его мелкий дефект.
— С покупателя могла быть удержана конкретная сумма за возврат.
Экземпляр строки возврата знает экземпляр строки продажи, а также:
цену возврата;
код причины возврата;
дату продажи;
— цену продажи.
Похоже, что в этом случае применяется соответствующий данной области метод gen-spec. Некоторые обязанности остаются прежними, а другие изменяются.
#67. Стратегия "Общие атрибуты"
|
• Рассмотрим классы, имеющие общие атрибуты. • Если смысл и имена атрибутов совпадают и можно использовать метод gen-spec, примените класс обобщения и выделите все общее, что было обнаружено между ними. |
#120. Стратегия"Общие службы" |
• Изучим классы, имеющие общие службы. • Если смысл и имена служб совпадают и можно применить метод gen-spec, примените класс обобщения и выделите все общее, что было обнаружено между ними. |
Если имя службы остается прежним, но ей присущи конкретные детали, это имя нужно указать и при обобщении, и при ограничении.
Добавим к модели экземпляр строки возврата в качестве ограничения экземпляра строки продажи (рис.1. 34).
Рис.1. 34. Экземпляры строки продажи и экземпляры строки возврата: