Создание отношений между классами


Общее замечание.
Для любого типа отношений задание его свойств осуществляется одинаковым способом - или дважды щелкнуть по линии, или вызвать для нее контекстное меню и выбрать пункт Specification.... Часть свойств отношения можно задать прямо в его контекстном меню. Общими свойствами для всех типов отношений являются: имя (Name), стереотип (Stereotype) и текстовое описание отношения (Documentation). Ниже будут описаны только специфические для каждого типа отношений свойства.

Отношение зависимости.
Является наиболее общей формой отношения в языке UML. Все другие типы отношений можно считать частным случаем данного отношения. Отношение зависимости показывает, что изменение одного класса влечет изменение другого класса. Чаще всего применяется, когда один класс использует другой в качестве аргумента. Изображается пунктирной линией со стрелкой, направленной от зависимого класса к независимому.
Для создания отношения зависимости следует выбрать кнопку Dependency or instantiaties на панели Toolbox, затем щелкнуть мышкой по зависимому классу и не отпуская кнопки мыши перетащить стрелку на независимый класс. Для данного типа отношения можно задать следующие свойства: будет ли иметь зависимый класс доступ к не-public элементам независимого класса (Friendship required), видимость отношения (Export Control), начальную (Multiplicity from) и конечную мощность(Multiplicity) отношения.

Отношение ассоциации, агрегации и композиции.
Поскольку отношения ассоциации, агрегации и композиции отличаются очень незначительно, то рассмотрим работу с ними в общем.
Отношение ассоциации показывает, что один класс каким-то образом связан с другим классом (аналог связи в диаграмме «Сущность-Связь»). Изображается сплошной линией, соединяющей классы.
Отношение агрегации - частный случай ассоциации. Представляет собой отношение типа «целое/часть». Изображается в виде простой ассоциации с незакрашенным ромбом со стороны «целого». Агрегация не является наследованием, поскольку все классы-«части» в агрегации являются вполне самостоятельными, со своими атрибутами и операциями, отличающимися от атрибутов и операций класса-«целое».
Отношение композиции - частный случай агрегации. Служит для выделения специальной формы отношения «целое-часть», при которой составляющие части в некотором смысле находятся внутри целого. Специфика взаимосвязи между ними заключается в том, что части не могут выступать в отрыве от целого, т.е. с уничтожением целого уничтожаются и все его составные части. Изображается в виде сплошной линии с закрашенным ромбом возле класса «целое».

Для создания одного из приведенных выше отношений следует выбрать кнопку Unidirectional Association на панели Toolbox, затем щелкнуть мышкой по одному классу и не отпуская кнопки мыши перетащить стрелку на другой класс. По умолчанию создается однонаправленная ассоциация, т.е. класс, от которого идет стрелка, знает об общих атрибутах и операциях второго класса, но не наоборот. Для создания двунаправленной ассоциации следует вызвать для отношения контекстное меню и выбрать пункт Navigable.
Для данных типов отношений можно задать следующие свойства:

  • вкладка General — роль классов в данном отношении (Role A и Role B);
  • вкладка Detail— является ли отношение производным (Derived); класс-ассоциация, связанный с данным отношением (Link Element); направление роли (Name Direction); ограничения - некоторое условие, которое должно выполняться (Constraints);
  • вкладки Role A General, Role B General — задаются общие свойства ролей классов, участвующих в отношении: название роли (Role), видимость роли (Export Control) и текстовое описание роли (Documentation);
  • вкладки Role A Detail, Role B Detail — задаются некоторые подробности ролей: имя роли (Role), ограничения для роли (Constraints), мощность роли (Multiplicity), направление отношения (Navigable), является ли отношение агрегацией (Aggregate), являются ли атрибуты классов, участвующие в отношении, статичными (Static); являются ли классы отношения дружественными (Friend); каким образом будут включаться созданные атрибуты агрегации - по значению или по ссылке (Containment of Class) (при выборе значения By Value тип отношения поменяется на композицию), добавление квалификаторов (Keys/Qualifiers).

Отношение обобщения.
Это отношение между общей сущностью (суперклассом, или родителем) и ее конкретным воплощением (субклассом, или потомком). Обобщения иногда называют отношениями типа "является", имея в виду, что одна сущность является частным выражением другой, более общей. Обобщение означает, что объекты класса-потомка могут использоваться всюду, где встречаются объекты класса-родителя, но не наоборот. Изображается в виде линии с большой незакрашенной стрелкой.
Для создания отношения обобщения следует выбрать кнопку Generalization на панели Toolbox, затем щелкнуть мышкой по классу-потомку и не отпуская кнопки мыши перетащить стрелку на класс-родитель. Для данного типа отношения можно задать следующие свойства: будет ли иметь класс-потомок доступ к не-public элементам класса-родителя (Friendship required), видимость отношения (Export Control), будет ли наследоваться только одна копия класса-родителя (Virtual inheritance).

Отношение реализации.
Это отношение между двумя элементами модели, при котором один элемент (клиент) реализует поведение, заданное другим (поставщиком). Изображается в виде пунктирной линии с большой незакрашенной стрелкой, указывающей на поставщика. Чаще всего реализации используют для определения отношений между интерфейсом и классом или компонентом, который предоставляет объявленные в интерфейсе операции или услуги.
Для создания отношения обобщения следует выбрать кнопку Realize на панели Toolbox, затем щелкнуть мышкой по объекту-клиенту и не отпуская кнопки мыши перетащить стрелку на объект-поставщик. Специфических свойств у данного типа отношений не предусмотрено.


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



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