Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.Н. Половикова. Методическое пособие по UML.doc
Скачиваний:
35
Добавлен:
18.03.2016
Размер:
764.42 Кб
Скачать

Типы отношений на диаграмме классов

При построении диаграмме классов могут быть использованы следующие отношения:

  • Отношение зависимости (dependency relationship).

  • Отношение ассоциации (association relationship).

  • Отношение обобщения (generalization relationship).

  • Отношение реализации (realization relationship).

Отношение зависимости является наиболее общей формой отношения между классами. На диаграмме данное отношение изображается пунктирной линией со стрелкой, направленной от зависимого класса к источнику зависимости. Отношение зависимости используется в ситуации, когда изменения одного класса могут потребовать изменения другого зависимого от него класса. На рис. 4.4 представлена следующая ситуация - свойства объектов класса Заказ автомобиля зависят от свойств объектов класса Автомобиль.

Рис. 4.4. Пример отношения зависимостимежду двумяклассами.

Для отношения ассоциации используется понятие арности - количество классов, участвующих в данном отношении. Бинарная ассоциация (в отношении участвуют два класса) является частным случаем N-арной ассоциации.

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

Рис. 4.5. Пример отношения агрегациимежду классами

Частным случаем отношения агрегации является отношение композиции см. рис.4.6. Отношение композиции показывает, что не может существовать отдельно от класса-целое (либо для того чтобы подчеркнуть, что класс-часть имеет смысл рассматривать только как составную часть другого класса). Следует заметить, что в зависимости от решаемых задач и от свойств предметной области между одними и теми же классами может быть установлено в одном случае отношение композиции, в другом – отношение агрегации.

Рис. 4.6. Пример отношения композиции (частный случай отношения агрегации) между классами.

Отношение обобщения является отношением между более общим классом (классом-родителем) и более частным классом (классом-потомком). При этом предполагается, что класс-потомок обладает всеми свойствами и поведением класса-потомка, а также может иметь свои собственные свойства и поведение, которые отсутствуют у класса-родителя см. рис. 4.7 (классы Голкипер, Защитник, Играющий тренер наследуют свойства и поведение родительского класса Футболист, класс Играющий тренер наследует свойства и поведения класса Тренер). Наследуются потомками не все свойства класса-родителя (атрибуты и методы), а только с областью видимости общей и закрытой (public, protect).

Рис. 4.7. Пример отношения обобщения между классами.

Выявление классов (одна из основных задач проектирования системы- определить классы и отношения между ними)

Для выявления классов следует рассмотреть документацию к дисграммам прецедентов. Имена существительные, которые участвуют в этом описании, позволят определить классы. Имена существительные могут стать: актёрами, классами (и как следствием объектом этого класса для построения диаграммы последовательности) или атрибутами классов.

Вторым способом является анализ диаграмм последовательностей. Но этих диаграмма следует найти схожие объекты, т.е. те объекты, которые обладают одинаковыми данными и поведением. Пример. На диаграммах последовательности участвуют два объекта Счет Мистера Иванова и Cчет Миссис Петровой. Оба счета обладают такими свойствами как баланс и пароль, оба счета можно пополнять, проверять пароль и т.д. Тогда следует создать класс Счёт.

Но не все классы можно получить из анализа диаграммы последовательности или документации с описанием сценариев поведения прецедентов. После выявления классов указанными способами следует еще проанализировать систему по трем направлениям:

  • классы, необходимые для описания основных сущностей (стереотип <<Entity>>);

Классы-сущности присутствуют на каждой диаграмме классов. Они описывают основные понятия системы.

  • классы, необходимые для управления системой и её элементами (стереотип <<Control>>);

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

  • классы, необходимые для связи с внешним миром (стереотип <<Boundary>>).

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