Статические операции и атрибуты

Если в UML ссылаются на операции и атрибуты, принадлежащие классу, а не экземпляру класса, то они называются статическими. Это эквивалентно статическим членам в С-подобных языках. На диаграм­ме класса статические элементы подчеркиваются (рис. 5.2).


Агрегация и композиция

К одним из наиболее частых источников недоразумений в UML -мож­но отнести агрегацию и композицию. В нескольких словах это можно объяснить так; Агрегация (aggregation) - это отношение типа «часть целого». Точно так же можно сказать, что двигатель и колеса пред­ставляют собой части автомобиля. Звучит вроде бы просто, однако при рассмотрении разницы между агрегацией и композицией возникают определенные трудности.

До появления языка UML вопрос о различии между агрегацией и ком­позицией у аналитиков просто не возникал. Осознавалась подобная неопределенность или нет, но свои работы в этом вопросе аналитики совсем не согласовывали между собой. В результате многие разработ­чики считают агрегацию важной, но по совершенно другой причине. Язык UML включает агрегацию (рис. 5.3) но семантика ее очень рас­плывчата. Как говорит Джим Рамбо (Jim Rumbaugh); «Можно пред­ставить себе агрегацию как плацебо для моделирования» [40].

Наряду с агрегацией в языке UML есть более определенное свойство -композиция (composition). На рис. 5.4 экземпляр класса Point (Точка), может быть частью многоугольника, а может представлять центр ок­ружности, но он не может быть и тем и другим одновременно. Главное


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

Вы заметите, что на рис 5.4 я не показываю обратные кратности. В боль­шинстве случаев, как и здесь, они равны 0..1. Единственной альтерна­тивой является значение 1, когда класс-компонент разработан таким образом, что у него только один класс-владелец.

Правило «нет совместного владения» является ключевым в компози­ции. Другое допущение состоит в том, что если удаляется многоуголь­ник (Polygon), то автоматически должны удалиться все точки (Points), которыми он владеет.

Композиция - это хороший способ показать свойства, которыми владе­ют по значению, свойства объектов-значений (стр. 100) или свойства, которые имеют определенные и до некоторой степени исключитель­ные права владения другими компонентами. Агрегация совершенно не имеет смысла; поэтому я не рекомендовал бы применять ее в диаграм­мах. Если вы встретите ее в диаграммах других разработчиков, то вам придется покопаться, чтобы понять их значение. Разные авторы и ко­манды разработчиков используют их в совершенно разных целях.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: