9.4. Что такое ассоциация? 211
Давайте рассмотрим товары в качестве примера, иллюстрирующего
иерархии и сети. Существует две фундаментальные абстракции:
• ProductType (тип товара) – тип продукта, например «Струйный прин
тер»;
• ProductItem (товарная позиция) – конкретный струйный принтер с се
рийным номером 0001123430.
ProductType и ProductItem очень подробно рассматриваются в книге [Ar
low 1]. Типы товаров обычно образуют сети. Таким образом, Product
Type, например комплект вычислительного оборудования, может со
стоять из ЦП, монитора, клавиатуры, мыши, видеокарты и других ти
пов товаров (ProductType). Каждый из этих ProductType описывает тип
товара, а не конкретную товарную позицию, и эти типы товаров могут
входить в другие составные ProductType, например в разные комплекты
вычислительного оборудования.
Если же рассматриваются товарные позиции (ProductItem), которые яв
ляются конкретными экземплярами ProductType, любая позиция Pro
ductItem (например, конкретный ЦП) может быть продана и поставле
на как часть одного комплекта товаров только один раз. Следователь
но, товарные позиции образуют иерархии.
9.4.3. Возможность навигации
Возможность навигации (navigability) указывает на возможность про
хода от объекта исходного класса к одному или более объектам в зави
симости от кратности целевого класса. Смысл навигации в том, что
«сообщения могут посылаться только в направлении, в котором ука
зывает стрелка». На рис. 9.13 объекты Order могут посылать сообще
ния объектам Product, но не наоборот.
Возможность навигации показывает, что объекты исходного класса
«знают об» объектах целевого класса.
Одна из целей хорошего ОО анализа и проектирования – минимизиро
вать количество взаимосвязей между классами. И применение возмож
Диаграмма классов
A
0..*
0..*
сеть ассоциаций
Пример диаграммы объектов
f1: A
a1: A
c1: A
d1: A
e1: A
b1: A
g1: A
Рис. 9.12. Упрощенное представление сети WWW