Отношение композиции

Отношение композиции, как уже упоминалось ранее, является частным слу­чаем отношения агрегации. Это отношение служит для выделения специ­альной формы отношения "часть-целое", при которой составляющие части в некотором смысле находятся внутри целого. Специфика взаимосвязи между ними заключается в том, что части не могут выступать в отрыве от целого, т. е. с уничтожением целого уничтожаются и все его составные части.

Возможно, не самый лучший, но наверняка понятный всем пример этого отношения представляет собой живая клетка в биологии. Другой пример — окно интерфейса программы, которое может состоять из строки заголовка, кнопок управления размером, полос прокрутки, главного меню, рабочей области и строки состояния. Нетрудно понять, что подобное окно представ­ляет собой класс, а его компоненты являются как классами, так и атрибута­ми или свойствами окна. Последнее обстоятельство весьма характерно для отношения композиции, поскольку отражает различные способы представ­ления данного отношения.

Графически отношение композиции изображается сплошной линией, один из концов которой представляет собой закрашенный внутри ромб. Этот ромб указывает на тот из классов, который представляет собой класс-ком­позицию или "целое". Остальные классы являются его "частями" (рис. 5.10).

Рис. 5.10.Графическое изображение отношения композиции в языке UML

В качестве дополнительных обозначений для отношений композиции и аг­регации могут использоваться дополнительные обозначения, применяемые для отношения ассоциации. А именно, указание кратности класса ассоциа­ции и имени данной ассоциации, которые не являются обязательными. Применительно к описанному выше примеру класса "Окно_программы" его диаграмма классов может иметь следующий вид (рис. 5.11).

Рис. 5.11.Диаграмма классов для иллюстрации отношения композиции на примере класса окна программы.

Данный пример может иллюстрировать и другие особенности разрабатывае­мой компьютерной программы, которые не указывались в явном виде при описании этого примера Так, в частности, указание кратности 1 рядом с классом "Рабочая_область" характерно для однодокументных приложений.