- •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. Общая схема на данный момент
- •Выбор объектов
Проблема "ограничения по совпадению"
Иногда наследование применяется для выражения связанных с конкретным приложением вариантов класса. При этом достигается множественность повторного использования.
Разумеется, таким способом тоже можно явно выразить общность, но какой ценой?
При добавлении нового приложения, возможно, понадобится изменить существующую иерархию классов: добавить класс, переместить атрибут или службу. Всякий раз при этом придется выбирать:
вносить изменения напрямую, что повлияет на другие приложения (слишком дорогостоящий путь), или использовать дальнейшие ограничения, втягиваясь в рутинную работу в своем приложении.
Наследование — эффективный механизм, предназначенный для выражения отношений обобщения-ограничения, связанных с конкретной областью, а не для ограничения по совпадению.
Нужно найти лучший способ работы с механизмом обобщения па множестве приложений.
Проблема "то один вид, то другой"
Иногда разработчики стремятся к тому, чтобы o67ieK'r изменялся сам, постепенно конвертируя себя из одного ограничения в другое.
Для этого требуется огромное множество служб создания, копирования и удаления. При этом невозможно зафиксировать, что происходит с течением времени.
Лучше добавить к модели объект, играющий множество ролей (шаблоном такого подхода может быть образец актер-участник).
Проблема "эффект мелкой волны"
Случается, разработчики забывают, что изменения в классах обобщения могут сильно влиять на то, что находится ниже в иерархии классов. Эти изменения распространяются волной на классы ограничения и далее вниз по иерархии классов (на средства тестирования в том числе). Именно поэтому имеет смысл применять неглубокие (до четырех уровней) структуры обобщения-ограничения, связанные с конкретной областью. Вот почему метод "ограничения по совпадению" распадается так быстро (при десяти или двадцати уровнях ограничений, связанных с конкретной областью, "эффект мелкой волны" становится похожим больше на "эффект волны прилива").
Наследование — это тотальное бедствие?
Ознакомившись с изложенными выше проблемами, можно подумать, что дело обстоит именно так.
Наследование окупается, если применяется в разумном контексте
Используйте наследование в единственном приложении для отображения отношений обобщения-ограничения в конкретной области. Не задействуйте его для управления представлением (показывающим, с чем вы хотите работать в специальном приложении).
Наследование разрушается, когда оно применяется для:
— выделения общности без учета связанного с конкретной областью обобщения-ограничения;
отображения представлений, связанных с конкретным приложением.
Механизм повторного использования #2: компоненты
В данном случае объект состоит из нескольких компонентов.
Приведем простой пример. Возможно, в повседневных разговорах вы слышали, как человек говорит обо всех головных уборах, которые он носит. Данный объект (человек) в обыденной жизни носит разные головные уборы. Обязанности этого объекта представлены множеством форм участия.
Образец "актер-участник" — это шаблон для повторного использования, основанного на конкретном компоненте.
Повторное использование компонентов особенно полезно, когда оно проводится на множестве приложений. Для каждого приложения выбираются компоненты, с которыми необходимо работать.