Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛабUML.doc
Скачиваний:
30
Добавлен:
16.03.2015
Размер:
1.46 Mб
Скачать

Клиент

Поставщик

«call»

«friend»

«instantiate»

«call»

Рисунок 4 – Зависимости между классами

На рисунке 4 класс А вызывает операции классов В и С ; класс С создаёт экземпляры класса В, пользуясь его конструктором; операция класса D может иметь доступ в порядке исключения к содержимому класса В.

В таблице приведены стандартные зависимости, используемые в UML.

Стандартные зависимости <стереотипы>:

become

превращать объект класса-клиента в объект класса-поставщика

bind

связывать (клиент создаёт новый элемент с помощью параметризованного шаблона поставщика)

call

вызывать операцию на исполнение

copy

копировать (создать независимую копию клиента)

create

создавать (использовать конструктор поставщика)

derive

выводить (атрибуты клиента вычисляются по атрибутам поставщика)

extend

расширять (клиент расширяет функциональность поставщика)

friend

быть дружественным (клиент имеет исключительный доступ к содержимому поставщика)

import

импортировать (клиент импортирует атрибуты и операции поставщика)

include

включать (клиент включает в себя функциональность поставщика)

instanceOf

являться экземпляром (клиент является частным примером поставщика)

instantiate

создать экземпляр (клиент создаёт с помощью конструктора поставщика экземпляр поставщика и инициализирует его)

refine

уточнять (клиент является уточнением поставщика по дополнительной информации)

send

отправить (клиент отправляет сигнал поставщику)

trace

трассировать (клиент является более новой версией поставщика)

use

использовать (клиент использует услуги поставщика для реализации своего поведения).

Отношение ассоциации (ассоциация, association) – описывает связи между экземплярами классов (объектами) - в отличие от зависимости, которая относится к классу в целом. В ассоциации проставляется множественность участия экземпляров в связи (один или много).

Наиболее проста бинарная ассоциация, в которой участвуют в точности 2 класса или, как исключение, один класс, связанный сам с собой. В бинарной ассоциации может быть указано направление связи – зачерченным треугольником.

На рисунке 5 экземпляром отношения является, например, пара «Иванов – ООО «Ракурс»».

Рисунок 5 – Бинарная ассоциация

В n–арной ассоциации участвуют три и более класса, при этом один класс может участ-

вовать в ассоциации более чем один раз. Каждый экземпляр такой ассоциации - n-мерный кортеж из объектов соответствующих классов. Графически,n-арная ассоциация обозначается ромбом. Пример:тернарная ассоциация из классов: футбольная команда, год, игра.

Каждый класс в ассоциации может играть свою роль, которая может быть проставлена у полюса(конца) ассоциации в виде строки текста. Например: год игры, год проведения чемпионатов мира и т.д., т.е. класс может играть разные роли в зависимости от смысла отношения.

Рисунок 6 – Трёхарная ассоциация

Важной характеристикой ассоциации является кратность (множественность и обязательность связи). Обозначение “*” обозначает “0. .*”, т.е. необязательность связи «много».

В более сложном случае ассоциация может быть классом (класс – ассоциация,associationclass), в нём присутствуют и свойства класса, и свойства ассоциации. Экземплярами такого класса являются связи, в которых имеются не только ссылки на объекты, но и конкретные значения атрибутов связи.

Классы – ассоциации могут иметь операции, изменяющие атрибуты связи, могут участвовать в различных ассоциациях, но сами с собой ассоциации они иметь не могут!

Обозначение класса - ассоциации показаны на рисунке 7.

Класс-ассоциация

Атрибут ассоциации

Рисунок 7 – Пример класса-ассоциации

Такой подход уместен при связи «многие ко многим». Иначе можно было бы включить оклад в атрибуты одного из классов. Однако, если требуется отобразить историю окладов (дата/оклад) т.е. несколько экземпляров связей между одними и теми же объектами, то класс – ассоциации уже использовать нельзя!Нужно вводить обычный класс с атрибутами (см. рисунок 8).

предоставляет

Фирма

Название

Адрес

имеет

Работа

Месяц

Зарплата

1

*

Роль фирмы

Сотрудник

Таб.номер

ФИО

*

1

Является источником работы

Обладатель работы

Роль сотрудника

Рисунок 8 – Пример с многими экземплярами связей между двумя объектами

Важным частным случаем отношения ассоциации, выделяемым в отдельную группу, является отношение агрегации.

Отношение агрегации (агрегация,aggregation) – один из классов (агрегат) состоит из других классов или его характеристиками являются другие классы (отношение часть/ целое,partof). Это отношение является фундаментальным при моделировании сложной системы, позволяет декомпозировать систему на составные части. В агрегации принцип наследованияне соблюдается. Каждая часть или характеристика обладает своими атрибутами и поведением. Агрегация в UML обозначается ромбом, примыкающим к агрегату ( рисунок 9). У полюсов связей может быть указана множественность. Любая часть может входить в несколько различных агрегатов.

Рисунок 9 - Агрегат и его части

Частным случаем агрегации является композиция.

Композиция (composition)– усиленная форма агрегации, в которой агрегат, называемыйкомпозитом, несёт полную ответственность за создание и уничтожение своих частей, т.е. самостоятельно классы - части композита существовать не могут. Таким образом, время жизни частей не превышает времени жизни агрегата – композита (она может быть меньше). Кроме того, каждая часть может входить только в один экземпляр агрегации. Композиция обозначается закрашенным ромбом.