Добавил:
Рад, если кому-то помог Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекции (1 курс, 2 семестр) УТкПО / Управление требованиями к программному обеспечению 4

.pdf
Скачиваний:
2
Добавлен:
01.11.2025
Размер:
1.49 Mб
Скачать

Классы ассоциаций

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

Класс ассоциации – это ассоциация, которая одновременно является классом.

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

Подобно обычным классам, классы ассоциаций могут иметь атрибуты и операции и участвовать в ассоциациях.

Классы ассоциаций присутствуют в формулировке задачи в виде наречий или получаются абстрагированием известных значений.

Связи ассоциации могут обладать

атрибутами

В примере представлен процесс accessPermission (разрешение доступа) является атрибутом AccessibleBy (Доступно). Данные в нижней части рисунка показывают возможные значения каждой связи.

В UML класс ассоциации обозначается прямоугольником, прикрепленным к ассоциации пунктирной линией.

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

На рисунке атрибут accessPermission относится к файлу и пользователю одновременно и не может быть прикреплен только к одному из них без потери информации

Атрибуты в ассоциациях типа один- ко-многим

На рисунке показаны атрибуты двух ассоциаций типа один-ко-многим.

Каждый человек, работающий на компанию, получает зарплату и занимает некоторую должность. Босс оценивает работу каждого сотрудника.

Атрибуты могут присутствовать и в ассоциациях типа один-к-одному.

Не следует упаковывать атрибуты ассоциации

в класс На рис. показано, каким образом можно упаковать атрибуты ассоциации типа один-к-одному или один-ко-многим в класс, противоположный полюсу с кратностью «один».

Для ассоциаций типа многие-ко- многим это сделать невозможно. Как правило, упаковывать атрибуты ассоциации в класс все же не рекомендуется, поскольку кратность ассоциации может измениться. Оба варианта, изображенных на рис., допустимы

для ассоциации типа один-ко-

многим, однако только первая форма останется корректной, если

кратность ассоциации WorksFor

изменится на многие-ко-многим.

Класс ассоциации позволяет четко указать индивидуальности

На рисунке показан класс ассоциации, участвующий в другой ассоциации.

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

Классы ассоциаций являются важным аспектом модели классов, поскольку они позволяют точно указать индивидуальности и маршруты

навигации.

Классы ассоциаций существенно отличаются от обычных классов

Не следует путать классы ассоциаций с ассоциациями, которые были выделены в отдельные классы.

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

Квалифицированные ассоциации

Квалифицированной называется ассоциация, у которой имеется специальный атрибут (квалификатор), используемый для того, чтобы отличать друг от друга объекты, находящиеся на полюсе ассоциации с кратностью «много».

Квалификаторы могут быть определены для ассоциаций типа один-ко-многим и многие-ко- многим.

Квалификатор позволяет выбрать отдельный объект из множества целевых объектов, уменьшая таким образом эффективную кратность до значения «один». Квалифицированная ассоциация с целевой кратностью «один» или «не более одного» образует четкий маршрут для поиска целевого объекта по исходному.

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

Исходный класс вместе с квалификатором определяют целевой класс.

Квалифицированные ассоциации

Ассоциации: а) квалифицированная б) неквалифицированная

Банк обслуживает множество счетов. Счет принадлежит одному единственному банку. В контексте банка уникальный счет определяется своим номером.

Банк и Счет – это классы, а Номер Счета – квалификатор. Квалификация уменьшает эффективную кратность ассоциации до единицы.

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

Сначала следует найти банк, а затем указать номер счета, и в результате вы получаете нужный счет.

Обобщение

Обобщение (generalization) – это отношение между классом (суперклассом) и одной или несколькими его вариациями (подклассами).

Обобщение объединяет классы по их общим свойствам, благодаря чему обеспечивается структурирование описания объектов.

Суперкласс характеризуется общими атрибутами, операциями и ассоциациями. Подклассы добавляют к ним свои собственные атрибуты, операции и ассоциации. Говорят, что подкласс наследует составляющие суперкласса.

Обобщение иногда называется отношением типа «является», поскольку каждый экземпляр подкласса одновременно является экземпляром суперкласса.

Простое обобщение упорядочивает классы в рамках некоторой иерархии. В этом случае каждый подкласс имеет одного непосредственного предка (его суперкласс). Однако возможна более сложная форма обобщения, при которой подкласс может иметь несколько непосредственных суперклассов. Уровней обобщения может быть много.

Обобщение обозначается большой незакрашенной стрелкой. Стрелка указывает на суперкласс.

Обобщение

Оборудование может быть насосом (Pump), теплообменником (HeatExchanger) или резервуаром (Tank). Насосы бывают нескольких типов: центробежные

(CentrifugalPump), мембранные (DiaphragmPump) и

плунжерные (PlungerPump). Резервуары бывают сферические (SphericalTank), с наддувом (PressurizedTank) и с плавающей крышей (FloatingRoofTank). То, что символ обобщения резервуара изображен ниже символа обобщения насоса, никакого особого значения не имеет