- •Стратегии «Руководство по основным действиям и компонентам».
- •Стратегии идентификации назначения и характерных свойств системы
- •Описание примера: Магазин (приложение для торгового терминала)
- •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.4. Обязанности транзакций проблемной области
Транзакции— это моменты времени, в которые объект взаимодействует с кем-то и о которых система обязана помнить для удовлетворения своих будущих потребностей. Рассмотрим следующие транзакции:
— продажа (и ее часть — экземпляр строки продажи);
— оплата;
— сеанс.
Продажа
А. Определение обязанностей: "что я знаю"
#54. Стратегия "Определение атрибутов транзакций" |
• Для транзакций нужно определить: номер, дату, время и статус. • Для экземпляров строки требуются: количество (если экземпляр строки знает "какой-то", а не конкретный экземпляр товара) и статус. |
Для транзакции sale(продажа) нужны два атрибута:
— дата и время.
Следующая стратегия применяется для total(общая сумма).
#66. Стратегия "Вычисление результата" |
• Прежде всего, не стройте в объектной модели атрибут для выражения вычисляемого результата. • В случае необходимости этот атрибут можно добавить следующим образом: Точно определите для данного атрибута службу "get <attribute>". Определите эту службу так, чтобы она: проверяла значение атрибута и возвращало это значение, если оно существует, а в противном случае задействовала службу вычисления, сохраняла результат вычислений и возвращала его. Точно определите службу "calculate <attribute>", чтобы поручать объекту выполнение нужных вычислений. |
К модели "total" можно добавить в качестве атрибута и "gettotal" в качестве службы. Однако для простоты запланируйте пока внесение в модель только службы "calculatetotal".
Б. Определение обязанностей: "кого я знаю".
Определим, кого в общем случае должен знать объект transaction.
#76. Стратегия "Определение связей объекта транзакции" |
• Для транзакции определите ее связи с участниками, с экземплярами строки транзакции и с сопутствующей транзакцией (происходящий в тот же момент времени). • Для экземпляра строки транзакции обозначьте ее связи с транзакцией, с сопутствующим объектом "описание экземпляра товара" и с экземпляром строки следующей транзакции. |
Ранее с помощью образцов мы уже определили, что транзакция saleзнает:
— сеанс;
— оплату;
— экземпляры строки продажи.
В. Определение обязанностей: "что я делаю".
#96. Стратегия "Определение служб для транзакции" |
• Для транзакции включите в модель следующие службы: calculate for me (вычислить для меня), rate me (оценить меня), is <value> (есть <значение>). • Для транзакции в качестве множества нужны следующие службы: how many, how much (сколько?), rank transaction line items (оценить экземпляры строки транзакции), rank subsequent transactions (оценить следующие транзакции), calculate over transaction line items (провести вычисления на множестве экземпляров строки транзакции), calculate over subsequent transactions (провести вычисления на множестве следующих транзакций) (плюс службы для выполнения бизнес- правил на всем этом множестве). • Для экземпляров строки определите службы: calculate for me (вычислить для меня), rate me (оценить меня). |
Что касается системы торгового терминала, транзакция saleможет выполнять следующие полезные действия:
— вычислять промежуточную сумму для данной продажи (без налога);
— вычислять скидку для данной продажи;
— вычислять налог для данной продажи;
— вычислять общую сумму для данной продажи (всю сумму с учетом налога);
— завершить (commit).
Добавим обязанности транзакции saleк объектной модели (рис.1. 32).
Рис.1. 32. Продажа: «что я знаю, кого я знаю, что я делаю»