Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема-05-02испр.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
797.95 Кб
Скачать

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

Подобно классам, ассоциация может иметь атрибуты и операции. В этом случае можно гово­рить о классе ассоциации. Для отображения класса ассоциации используются обозначения обыч­ного класса с добавлением пунктирной линии, соединяющей его с линией ассоциации. Класс ас­социации может быть связан с другими классами. На рис. 5.2-29 показан класс ассоциации Играет в между игроком и командой. Так как профессиональный игрок связан с командой контрактом, то возникает класс ассоциации Контракт, который, в свою очередь, связан с классом ГлавныйМенеджер.

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

5.2.4.11 Кратность

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

Приведенное отношение является примером разной кратности, которая означает количе­ство объектов одного класса, связанных с одним объектом другого. Чтобы представить это коли­чество на диаграмме, определенное число можно поместить под (над) линией ассоциации возле соответствующего класса. Один класс может быть связан с другим различными способами: «один к од­ному», «один ко многим», «один к нескольким», «один к ограниченному интервалу» (например, «один к 5.. 10»), «один к заданному количеству п" или «один к набору» (например, «один к 9 или 10»). Для представления понятия «много» в UML используется символ звездочки (*). Логическое ИЛИ передается двумя обозначениями: с помощью двух точек (1. . *), что означает «один или бо­лее», или запятой (5,10), что означает «5 или 10». Если класс А находится в отношении «один к 0 или 1» с классом Б, то последний называется необязательным для класса А. На рис. 5.2-30 показа­ны изображения возможных значений кратности.

Рис. 5.2-30. Возможные значения кратности и их представления в UML

5.2.4.12. Рефлексивные ассоциации

Иногда класс находится в ассоциации с самим собой. Этот вариант отношения, названный рефлексивной ассоциацией, может возникнуть в том случае, если объекты одного класса выполня­ют несколько ролей. Человек в машине может быть пассажиром или водителем. В роли водителя он везет одного или нескольких пассажиров (или не везет никого). На диаграмме этот случай ото­бражается с помощью линии ассоциации, ведущей от прямоугольника класса к этому же прямо­угольнику. На линии ассоциации, как обычно, обозначаются роли, имя ассоциации, ее направле­ние и кратность. Пример такой ассоциации представлен на рис. 5.2-31

Рис. 5.2-31. Пример рефлексивной ассоциации

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

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