- •Стратегии «Руководство по основным действиям и компонентам».
- •Стратегии идентификации назначения и характерных свойств системы
- •Описание примера: Магазин (приложение для торгового терминала)
- •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.6.7. Общая схема на данный момент
Мы выбрали объекты с помощью стратегий и образцов. На рис. 1.18 показана общая схема результата этого отбора.
Рис. 1.18. Общая схема на данный момент
1.7. Применение стратегий для определения обязанностей объектов проблемной области
Каждый объект и каждая объектная модель имеют свои обязанности, или обязательные функции.
Объект знает о себе самом.
Объект знает другие объекты.
Объект действует самостоятельно или вместе с другими объектами.
Наша задача — с помощью стратегий определить обязанности системы (в плане знаний и действий) в следующих аспектах:
— что я знаю;
— кого я знаю;
— что я делаю.
1.7.1. Обязанности актеров и участников Актер: человек
А. Определение обязанности: "что я знаю"
#52. Стратегия "Определение атрибутов актера и участника" |
• Для актера рассмотрите: имя, адрес, телефон. • Для участников рассмотрите: номер, дату и время (возможно, конечные дату и время), пароль, уровень авторизации. |
Что нужно знать о каждом объекте person? По-видимому, в любой момент о нем нужна одна и та же информация (все равно, кассир он или покупатель) (рис. 1.19.):
— имя;
— телефон;
— адрес.
Рис. 1.19. Человек: «что я знаю»
Б. Определение обязанности: "кого я знаю".
Кого знает объект person?
#72. Стратегия "Определение объектов, которых я знаю" |
• Это аспект возникающего объекта программного обеспечения: "Я знаю другие объекты, связанные с реальным объектом, абстракцией которого я являюсь". • Выберите связанные объекты, чтобы: точно знать, кому посылать сообщение (по одному или по нескольким сценариям); отвечать на запрос об объектах, непосредственно связанных с этим запросом. |
Особую помощь может оказать следующая стратегия.
#74. Стратегия «Определение связей между объектами»: определение обязанностей для актера и участника кого я знаю (образцы игроков) |
• Для актера включите в модель связь между ним и его участниками. •Для участника включите в модель связь между ним, его актером и его транзакциями. |
Объект personзнает объекты своих участников, а каждый объект participant (участник) знает свой объектperson(рис. 1.20).
Рис. 1.20. Человек: «кого я зною»
В. Определение обязанности: "что я делаю".
#89. Стратегия "Основные службы" |
• Основные службы, выполняемые всеми объектами, показаны в объектной модели только в особых сценариях, в которых они могут применяться. • Основные действия: получить, установить; добавить (связанный объект), исключить (связанный объект); создать (то, что делает класс) и инициировать, удалить. • Замечание: атрибуты являются собственными по соглашению. В сценариях используйте службы "get<attributename>" и "set<attributename>" для доступа к значениям атрибутов. • Основными службами DM для объектов управления данными являются поиск, загрузка и сохранение. |
Что должен делать объект person? То же самое, что любой другой объект:
— получить (get) ... значение атрибута;
— установить (set) ... значение атрибута;
— добавить (add) ... связь с другим объектом;
— исключить (remove) ... связь с другим объектом;
— удалить (delete) ... данный объект.
Аналогично, сам класс personдолжен делать то же самое, что и любой класс:
— создать и инициировать (createandinitialize) ... новый объект.
В объектной модели эти основные службы не нужны, они лишь иногда используются в представлении сценария. А если вы уже разместили их повсюду? Тогда придется к каждому содержащему объекты классу добавить по полдюжины отметок. Это значительно усложнит модель и вряд ли увеличит ее эффективность. Дело в том, что нотация не произвольна, и при усложнении модели необходимо делать ее более доступной для понимания.
("Упростить — значит удалить не обязательное, чтобы выявить необходимое." Ханс Хофман)
#94. Стратегия "Определение служб актера и участника" |
• Для актера или участника нужны службы: calculate for me,rate me,is<value>. » •Для актера как множества нужны службы: howmany,howmuch,rankparticipants,calculateoverparticipants(плюс службы для введения в действие бизнес- правил на всем этом множестве). • Для участника как множества нужны службы: howmany,howmuch,ranktransactions,calculateovertransactions(плюс службы для выполнения бизнес- правил на всем этом множестве). |
Обычно более интересно поведение объектов participant типа "что я делаю".