
- •2. Центр заказов «х» (Приложение ввода заказов) Введение
- •2.1. Определение цели и характерных свойств системы
- •2.1.1. Определение цели
- •2.1.2 Определение особенностей регистрации важной информации
- •2.1.3. Определение особенностей ведения дела
- •2.1.4. Определение особенностей анализа результатов бизнеса
- •Определение особенностей работы с взаимодействующими системами
- •2.2. Выбор объектов
- •2.2.1. Компоненты модели: с чего начинать
- •2.2.2. Стратегии: с какой начинать
- •План разработки данного приложения
- •2.4.1.Повторное использование
- •Понятность
- •Детали повторного использования
- •Механизмы повторного использования
- •Механизм повторного использования #1: наследование
- •Проблема "обобщения по совпадению"
- •Проблема "ограничения по совпадению"
- •Проблема "то один вид, то другой"
- •Проблема "эффект мелкой волны"
- •Наследование — это тотальное бедствие?
- •Наследование окупается, если применяется в разумном контексте
- •Механизм повторного использования #2: компоненты
- •Механизм повторного использования #3: представления
- •Представления, применение "ограничения на основе использования"
- •Представления, применение средства управления конфигурацией, основанной на представлении.
- •Повторное использование в рамках приложения, рассматриваемого в этой главе
- •2.5. Определение обязанностей объектов проблемной области
- •Актер – участник – транзакция - экземпляр строки транзакции -экземпляр товара
- •Организация - клиент - заказ - экземпляр строки заказа - экземпляр товара Организация
- •Человек-клерк по заказам - заказ-экземпляр строки заказа -экземпляр товара
- •Клерк по заказам
- •Человек-клиент для связи - заказ-экземпляр строки заказа - экземпляр товара
- •Клиент для связи
- •Актер – участник – транзакция - следующая транзакция-экземпляр строки следующей транзакции - экземпляр товара
- •Экземпляр строки склада
- •2.6.3. Разработка динамики взаимодействия с человеком с помощью сценариев Выбор сценариев взаимодействия с человеком
- •Сценарии "ввести заказ"
- •Сценарий: начать заказ
- •Сценарий: добавить экземпляр строки заказа
- •2.8.1. Разработка динамики управления данными с помощью сценариев
- •2.9. Общая схема на данный момент
- •Выбор объектов
2.5. Определение обязанностей объектов проблемной области
Определим обязанности, повторно используя некоторые из результатов, полученных в предыдущем примере. Множество классов выглядит очень знакомым:
Магазин
человек, кассир, продажа, экземпляр строки продажи
Склад
клиент, заказ, экземпляр товара, склад
Можно также повторно использовать конкретные образцы (более высокий уровень).
#37. Стратегия "Выбрать и повторно использовать
группу взаимодействующих объектов"
Используйте повторно:
• Другой экземпляр образца как таковой.
• Другой экземпляр образца, выделяя один или более из его классов.
• Образец по аналогии.
Множество конкретных образцов тоже уже известно. Вспомним магазин:
— актер-участник человек-кассир
— участник – транзакция - экземпляр строки транзакция - экземпляр товара / соединение - другое соединение
кассир – продажа - экземпляр строки продажи - экземпляр товара - цена
— актер – участник -транзакция - экземпляр строки транзакция-экземпляр товара организация – клиент – заказ - экземпляр строки заказа - экземпляр товара
— транзакция - следующая транзакция-экземпляр строки следующей транзакции экземпляр товара - экземпляр товара заказ-список выбора - экземпляр строки списка выбора - экземпляр товара
экземпляр строки транзакции - экземпляр строки следующей транзакции
- экземпляр строки заказа - экземпляр строки списка выбора
— контейнер-содержимое склад-заказ
— контейнер – контейнер – контейнер - экземпляр строки контейнера - экземпляр товара
склад – секция – бункер - экземпляр строки бункера - экземпляр товара.
Аналогичные конкретные образцы для центра заказов:
— актер – участник - транзакция-экземпляр строки транзакции - экземпляр товара организация – клиент – заказ - экземпляр строки заказа -экземпляр товара человек-клерк по заказам - заказ-экземпляр строки заказа - экземпляр товара человек-клиент для связи -заказ-экземпляр строки заказа — экземпляр товара
— актер – участник – транзакция - следующая транзакция – экземпляр строки транзакции – экземпляр товара организация – клиент – заказ – поставка – экземпляр строки поставки – экземпляр товара
— экземпляр строки транзакции - экземпляр строки следующей транзакции -экземпляр строки товара - экземпляр строки поставки
— группа - член группы
клиент - клиент для связи
актер -участник / группа-член группы / контейнер - экземпляр строки контейнера -экземпляр товара организация – дистрибьютор – склад - экземпляр строки склада - экземпляр товара
— контейнер-содержимое
склад-заказ.
Теперь мы определим обязанности с помощью образцов.
Актер – участник – транзакция - экземпляр строки транзакции -экземпляр товара
Рассмотрим обязанности класс за классом, используя конкретные образцы из приложений, рассмотренных ранее.
Организация - клиент - заказ - экземпляр строки заказа - экземпляр товара Организация
Ранее мы работали со следующей схемой (рис. 2.7).
Рис. 2.7. Организации — для склада
Выясним, что Нужно для разрабатываемого приложения. Что я знаю.
— Повторное использование: имя. Кого я знаю.
— Повторное использование: клиент (актер-участник).
Добавляется: дистрибьютор (актер-участник). Что я делаю: выполняю основные действия.
Рис. 2.8. Организация — для центра заказов
Результат показан на рис. 2.8.
Проверим ограничения на связи между этими объектами. "XOR" означает исключающую дизъюнкцию (либо одно, либо другое, но не то и другое вместе) и относится ко всем связям, обозначенным одной и той же пометкой — буквой, следующей за XOR.
В этом примере объект organization (организация) знает либо объект customer (клиент) либо объект distributor (дистрибьютор). В любом случае объект customer знает один объект.
Клиент
Рис. 2.9. Клиент — для склада
Ранее мы работали со следующей схемой (рис. 2.9). Сделаем запрос о номере клиента.
#63. Стратегия "Значение номера"
• Является ли атрибут номером с закодированным значением?
• Припишите атрибут каждому из значений.
• В большинстве случаев нужно также определить числовой атрибут (номер последовательности, не являющийся кодом).
Аналитик. Как вы идентифицируете клиентов?
Предприниматель. У нас есть следующая система нумерации клиентов:
— первые две буквы — это инициалы клиента;
— за ними следует приписанный клиенту номер склада;
— следующие шесть символов — номер регистрации, который мы используем при заполнении заказа данного клиента.
Аналитик. Это весьма интересно. Чтобы извлечь из номера имя, номер регистрации и склада, необходимы:
— имя клиента; а также
— система заполнения заказов, основанная на дате (и системе нумерации заказов клиентов), которая при необходимости обеспечивает доступ к исходной документации по заказу.
Далее мы исследуем активную сторону объекта customer. Он является участником. Посмотрим, что он может сделать, чтобы оценить или квалифицировать себя. Сначала спросим Предпринимателя, как она делает это, а затем выясним, что этот объект может сам.
Аналитик. Что вы делаете для оценки клиента?
Предприниматель. Используя критерии приоритета и кредитоспособность клиента, я оцениваю, устроит ли его счет по конкретному заказу.
Аналитик. Система может облегчить такую работу — она может ответить на этот вопрос.
Кроме того, оценить клиента помогут параметры:
— количество заказов за текущий год:
сумма денег, потраченная за текущий год.
Предприниматель. Хорошо.
И, наконец, определим обязанности каждого объекта customer.
Что я знаю.
— Повторное использование: номер.
Добавляется: приоритет, кредитоспособность.
Кого я знаю.
— Повторное использование: заказы (участник-транзакция).
— Добавляется: клиент для связи (компаньон-другой компаньон).
Что я делаю.Вопросы к реальному клиенту, на которые он в любой момент может ответить точно, со знанием дела и честно (!):
— Какие ваши заказы еще не выполнены?
— Устраивает ли вас счет по данному заказу?
— Сколько заказов вы сделали в текущем году?
Сколько денег вы потратили в этом году?
Значит, обязанности клиента "что я делаю" определяются:
— получением крупного заказа;
— соответствием счету;
— количеством (денег), потраченных за интервал времени;
— количеством (заказов) за интервал времени. Добавим эти обязанности к модели (рис.2.10).
Рис. 2.10. Клиент — для центра заказов
Заказ
Рассмотрим конкретные образцы, с которыми мы уже работали.
#36. Стратегия "Выбор и повторное использование аналогичных классов"
• Ищите классы, которые можно применить.
• Рассматривайте синонимы.
• Уточните более общее имя, используя оборот "... является видом...".
• Используйте метафоры (объекты, соответствующие данному) в аналогичных системах (в системе аналогичного назначения).
• Предупреждение. Избегайте метафор, основанных на действиях людей. Вместо этого сосредоточьтесь на объектах, с которыми производятся действия. Пусть они действуют самостоятельно. (В противном случае появятся управляющие объекты и объекты данных. В результате ослабляется связность и усиливается соединение).
В приложении для магазина использовалась "sale" ("продажа") (рис. 2.11), а для склада — "order("заказ") (рис. 2.12).
Рис. 2.11. Продажа — для магазина
Рис. 2.12. Заказ — для склада
Поищем сходство между конкретными образцами.
Что я знаю.
— Сходство: дата, время, номер, адрес поставки.
— Добавляется: номер торгового заказа клиента, статус.
Кого я знаю.
— Сходство: клиент (участник-транзакция), экземпляры строки заказа (транзакция-экземпляр строки транзакции).
— Добавляется: клиент для связи (участник-транзакция), поставка
(транзакция - следующая транзакция).
Что я делаю.
— Сходство: вычисления промежуточной суммы, налога и окончательной суммы. Экземпляр строки заказа
— Добавляется: заказ выполнен, значимость ставки (зависящая от даты заказа и его приоритета).
Результат показан на рис. 2.13.
Рис. 2.13. Заказ — для центра заказа
Экземпляр строки заказа
Ранее использовались следующие схемы (рис. 2.14 и 2.15).
Рис. 2.14. Экземпляр строки заказа — для магазина
Рис. 2.15. Экземпляр строки заказа — для склада
Определим обязанности в данном приложении.
Что я знаю.
Сходство: количество, налоговый статус.
Кого я знаю.
Сходство: заказ (транзакция-экземпляр строки транзакции), экземпляр товара (экземпляр товара - экземпляр строки).
Добавляется: экземпляр строки поставки (экземпляр строки - следующий экземпляр строки).
Что я делаю.
Добавляется: заказ выполнен, вычислить промежуточную сумму, величина налога данной категории.
Результат изображен на рис. 2.16.
Рис. 2.16. Экземпляр строки заказа — для центра заказов
Экземпляр товара
Ранее использовались следующие схемы (рис. 2.17 и 2.18).
Рис. 2.17. Экземпляр товара — для магазина
Рис. 2.18. Экземпляр товара — для склада
Определим обязанности в данном приложении.
Что я знаю.
Сходство: номер, описание.
Кого я знаю.
Сходство: экземпляр строки заказа (экземпляр товара - экземпляр строки), цена
(экземпляр товара - описание строки), категория налога (экземпляр товара - описание строки), UPC.
Добавляется: экземпляр строки поставки (экземпляр товара - экземпляр строки),
экземпляр строки склада (контейнер-экземпляр строки контейнера).
Что я делаю.
Сходство: определить цену на конкретную дату, определить количество, определить величину налога.
Результат показан на рис. 2.19.
Рис. 2.19. Экземпляр товара — для центра заказов