Агрегация
С помощью конструкции подсистемы в UML можно отображать модули, содержащие другие модули; прямоугольник класса, как правило, применяется в листьях декомпозиции. Подсистемы отображаются двояко — как пакеты и как классификаторы. В первом случае существует возможность декомпозиции подсистем, а значит, и агрегации (так здесь называют группировку) модулей. Подсистемы, изображаемые в качестве классификаторов, инкапсулируют свое содержимое и предоставляют явный интерфейс. UML предусматривает три способа обозначения агрегации: ♦ модули могут быть вложенными (рис. 9.7, слева); ♦ можно изобразить последовательность двух (в том числе связанных) диаграмм, вторая из которых обозначает содержимое модуля, показанного в первой; ♦ ребро, обозначающее композицию (ромбик примыкает к контуру агрегата), соединяет родительский и дочерний модули (рис. 9.7, справа). Композиция в UML понимается как разновидность агрегации с подразумеваемой жесткой принадлежностью — другими словами, ее части рождаются и умирают вместе с целым (агрегатом). Если, к примеру, модуль А состоит из модулей В и С, то последние не могут существовать без первого; соответственно, в случае уничтожения А в период прогона исчезают В и С. Таким образом, отношение композиции в UML выходит за рамки структурирования блоков реализации; оно также затрагивает элементы, принадлежащие к периоду прогона. Прежде чем принимать решение о введении отношения композиции UML, архитектор должен тиражировать соответствие этой принадлежности.
|