- •Стратегии «Руководство по основным действиям и компонентам».
- •Стратегии идентификации назначения и характерных свойств системы
- •Описание примера: Магазин (приложение для торгового терминала)
- •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. Общая схема на данный момент
Описание каждого атрибута
В некоторых случаях к модели можно добавить дескриптивную информацию о каждом атрибуте.
Однако важнее всего выбрать для них подходящие имена, обеспечивающие максимально эффективные связи. Удачно выбранное имя полезнее массы слов. (Если возникает потребность в длинном описании атрибута, нужно найти для него более подходящее имя.)
Разумеется, можно добавить описания атрибутов с тем, чтобы более полно показать суть каждого из них.
#58. Стратегия "Описание атрибутов по шаблону" |
• Опишите каждый атрибут, используя шаблон. описание допустимые значения (область действия, предел, нумерация значений) единица измерения тип данных устойчивость требуемый (да или нет) получить/установить ограничения как получить значение по умолчанию из другого источника, когда специальное значение неизвестно применимые состояния (для атрибутов, зависящих от состояния) коды ссылок на предшествующую документацию, если такая существует |
Можно дать описание на обычном языке, формальном языке спецификации (типа Object-Z) или даже использовать синтаксис языка программирования.
Вы вполне можете выработать навык составления коротких описаний и при этом даже находить новые атрибуты и службы.
Составим описания атрибутов объекта item.
Начнем с номера и описания:
номер: уникальный идентификационный номер, который Xназначает сама
требуемый: да
описание: имя экземпляра товара (возможно, его фабричная марка)
требуемый: да
длина=20 символов
обложение налогом: указание на то, облагается товар налогом или нет
нумерация значений: да или нет
по умолчанию: да
#61. Стратегия "Атрибут типа да/нет" |
• Атрибут может иметь значения "да" или "нет". Само имя атрибута может быть значением имени другого атрибута. Пример: облагается налогом (да или нет); изменение налогового статуса (облагается налогом, освобожден от налогов, распродается). Заблаговременное добавление деталей облегчает внесение изменений в будущем. |
"Облагаемый налогом" — это атрибут типа "да/нет", т.е. он имеет значение "да" или "нет".
Рассмотрим его более подробно. "Облагаемый налогом" — это имя значения: экземпляр товара - может быть "облагаемым налогом" и "не облагаемым налогом". Использование значения в качестве имени атрибута нецелесообразно и, более того, это далеко не лучший способ действий. При получении новых значений возникает проблема — объектная модель становится излишне сложной.
Вспомните свое последнее посещение магазина. Разве все товары облагаются налогом по одной и той же ставке? Или специальные налоги относятся к конкретной категории товаров?
Некоторые категории товаров облагаются налогом, другие — нет. В действительности объекту item нужно знать свою категорию налогообложения, а не то, облагается ли он вообще налогом или нет. Такая "необходимость знать" моделируется объектной связью с категорией налогообложения.
Подробное рассмотрение каждого атрибута приносит свои плоды, а составление его описания позволяет вникнуть в его детали. После дополнительного анализа объект item можно изобразить, как показано на рис. 1.27.
Рис.1. 27. Экземпляр товара: «что я знаю»
Б. Определение обязанностей: "кого я знаю"
Объект item знает:
— UPC (ни одного, один или несколько);
— цену (ни одной, одну или несколько);
— категорию налогообложения (ни одной, одну или несколько);
— экземпляр строки продажи (ни одного, один или несколько). Объекты UPC, цены и категории налогообложения знают свои экземпляры товара. Экземпляр строки продажи знает свой экземпляр товара (рис.1. 28).
Рис.1. 28. Экземпляр товара: «что я зною, кого я знаю. что я делаю»
В. Определение обязанностей: "что я делаю".
Зачем нужна абстракция, подобная объекту item? Для ее введения есть важная причина — отражение динамики системы. Данный объект — нечто большее, чем просто носитель данных. Чтобы понять назначение этого объекта, снова применим стратегию "сделай сам".
#86. Стратегия "Сделай сам" |
• Это аспект возникающего объекта программного обеспечения: "Я знаю другие объекты, связанные с реальным объектом, абстракцией которого я являюсь". • "Сделай сам" включает в себя атрибуты и службы, работающие с ними, что приводит к ослаблению соединения (coupling) и усилению связности (cohesion). • При построении моделирующей системы объект программного обеспечения будет имитировать действия реального объекта. В большинстве систем полная имитация не производится: объекты программного обеспечения делают то, что обязана делать система по отношению к конкретному объекту. |
Пусть абстракция экземпляра товара:
— получает цену для конкретной даты;
— определяет количество экземпляров товара-
Теперь можно запросить цену. Запрею количества — тоже хороший повод инкапсулировать зависящую цену экземпляра товара.
Добавим обязанности объекта item к объектной модели (рис.1. 28).