На следующем этапе уточняется система атрибутов: корректируются
атрибуты классов, вводятся, в случае необходимости, новые атрибуты. Атрибуты
выражают свойства объектов рассматриваемого класса, либо определяют их текущее
состояние.
Атрибуты обычно соответствуют существительным; например
цвет_автомобиля (свойство объекта), позиция_курсора (состояние объекта).
Атрибуты, как правило, слабо влияют на структуру объектной модели.
Не следует стремиться определить как можно больше атрибутов:
большое количество атрибутов усложняет модель, затрудняет понимание проблемы.
Необходимо вводить только те атрибуты, которые имеют отношение к проектируемой
прикладной системе, опуская случайные, малосущественные и производные атрибуты.
Наряду с атрибутами объектов необходимо ввести и атрибуты
зависимостей между классами (связей между объектами).
При уточнении атрибутов руководствуются следующими критериями:
- Замена атрибутов на объекты
. Если наличие некоторой сущности важнее, чем
ее значение, то это объект, если важнее значение, то это атрибут: например,
начальник - это объект (неважно, кто именно начальник, главное, чтобы кто-то им
был), зарплата - это атрибут (ее значение весьма существенно); город - всегда
объект, хотя в некоторых случаях может показаться, что это атрибут (например,
город как часть адреса фирмы); в тех случаях, когда нужно, чтобы город был
атрибутом, следует определить зависимость (скажем, находится) между классами
фирма и город.
- Квалификаторы
. Если значение атрибута зависит от конкретного контекста,
его следует сделать квалификатором (см. примеры в п.
2.3.4).
- Имена
. Именам обычно лучше соответствуют квалификаторы, чем атрибуты
объектов; во всех случаях, когда имя позволяет сделать выбор из объектов
некоторого множества, его следует сделать квалификатором (см. примеры в п.
2.3.4).
- Идентификаторы
. Идентификаторы объектов связаны с их реализацией. На
ранних стадиях проектирования их не следует рассматривать в качестве атрибутов.
- Атрибуты связей
. Если некоторое свойство характеризует не объект сам по
себе, а его связь с другим объектом (объектами), то это атрибут связи, а не
атрибут объекта.
- Внутренние значения
. Атрибуты, определяющие лишь внутреннее состояние
объекта, незаметное вне объекта, следует исключить из рассмотрения.
- Несущественные детали
. Атрибуты, не влияющие на выполнение большей части
операций, рекомендуется опустить.
|