- •Стратегии «Руководство по основным действиям и компонентам».
- •Стратегии идентификации назначения и характерных свойств системы
- •Описание примера: Магазин (приложение для торгового терминала)
- •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. Общая схема на данный момент
Регистрирующее устройство
А. Определение обязанностей: "что я знаю"
Объект register знает:
— номер (например, номер регистрирующего устройства равен 2).
Б. Определение обязанностей: "кого я знаю".
Объект register знает:
— магазин (один);
— сеанс (ни одного, один или несколько);
— ящик кассового аппарата (один в данной системе). (Каждый сеанс и каждый кассир знают свое регистрирующее устройство; магазин знает свои регистрирующие устройства.)
В. Определение обязанностей: "что я делаю".
Объект register выполняет основные службы (получить, установить, добавить, удалить). Он знает объекты своих сеансов и поэтому может выполнять действия на множестве объектов:
— подсчет (собранных денег) за интервал времени;
— подсчет количества (продаж) за интервал времени. Добавьте к объектной модели обязанности объекта register (рис.1. 29).
Рис.1. 29. Регистрирующее устройство: 'что я зною, кого я зною, что я делаю"
Ящик кассового аппарата
Определение обязанностей; "что я знаю".
Объект cash drawer (ящик кассового аппарата) знает:
— баланс;
— положение (открыт, закрыт);
— состояние операции (выполнена, сбой, пропущена).
Важное замечание по поводу состояния операции
Когда объект представляет интерактивную систему или средство, он должен знать свое "рабочее состояние". Для этого нужно добавить к модели описание службы, которое отражает тип действий, зависящий от состояния операции (ключевые слова: предусловие, триггер, прекращение, постусловие).
Рассмотрим действия с реальным экземпляром товара, а затем позволим возникающей в программном обеспечении абстракции выполнять их самостоятельно.
С реальным объектом (в данном случае с экземпляром товара) производятся следующие действия:
— выясняется цена для конкретной даты (высчитывается общая стоимость данного числа экземпляров товара).
Б. Определение обязанностей: "кого я знаю".
Объект cash drawer знает:
— свое регистрирующее устройство.
В. Определение обязанностей: "что я делаю".
Объект cash drawer:
— открывает.
Что происходит, когда абстрактному объекту cash drawer дается команда открыться? Он шлет электрический сигнал реальному устройству (ящик кассового аппарата), активизирует его и открывает.
А. Х, что вы думаете о ящике кассового аппарата, который закрывается автоматически?
Х. Неплохо, особенно для тех, кто забывает закрыть кассу в людном месте. Однако я не знаю о существовании таких аппаратов.
Добавим к объектной модели обязанности объекта cash drawer (рис.1. 30).
Рис.1. 30. Ящик кассового аппарата: «что я знаю, кого я знаю, что я делаю»
Категория налога
А. Определение обязанностей: "что я знаю".
Объект taxcategory(категория налога) знает свою категорию, ставку и срок действия.
Заметим, что комбинация значений категории и ставки налога может повторно возникать в различные моменты времени, поэтому ее полезно использовать в качестве шаблона конкретного экземпляра товара (но данный вопрос в этом разделе не рассматривается).
Б. Определение обязанностей: "кого я знаю".
Объект tax category знает:
— свои экземпляры товаров. (И экземпляр товара знает свои категории налогов.)
В. Определение обязанностей: "что я делаю".
Объект tax category выполняет основные службы: получить, установить, добавить (связь), исключить (связь) и удалить.
Добавим обязанности объекта tax category к объектной модели (рис.1. 31).
Рис.1. 31. Категория налога: «что я знаю, кого я знаю, что я делаю"