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

Существует тесная связь между ассоциациями класса и атрибутами класса.
Ассоциация между исходным и целевым классами означает, что объекты исходного класса могут сохранять объектную ссылку на объекты целевого класса. Иначе это можно представить так, что ассоциация эквивалентна исходному классу, имеющему псевдоатрибут целевого класса. Объект исходного класса может ссылаться на объект целевого класса с помощью псевдоатрибута.
Нет широко используемого ОО языка программирования, имеющего специальную языковую конструкцию для поддержки ассоциаций. По этому при автоматическом генерировании кода из UML модели ассоциации одиннккодному превращаются в атрибуты исходного класса.
В сгенерированном коде есть класс House с атрибутом address типа Address. Обратите внимание, как имя роли обеспечивает имя атрибуту, а класс, находящийся на другом конце ассоциации, обеспечивает класс атрибута. Приведенный ниже код на Java был сгенерирован из модели.

public class House
{
private Address address;
}

Как видите, есть класс House, имеющий один атрибут address типа Address. Обратите внимание, что видимость атрибута address – private; она применяется по умолчанию в большинстве случаев генерации кода.
Если кратность целевого класса больше 1, она реализуется одним из следующих способов:
• как атрибут типа array (массив) (конструкция, поддерживаемая большинством языков программирования);
• как атрибут некоторого типа, являющегося коллекцией.
Коллекции – это просто классы, экземпляры которых имеют особое поведение, заключающееся в способности сохранять и возвращать ссылки на другие объекты. Самым обычным примером коллекции в Java является Vector, но есть и многие другие.
Псевдоатрибуты хороши для отношений одинн-к-одному и один-комногим, но для отношений многие-ко-многим возникают проблемы.
Ассоциации используются только тогда, когда целевой класс является важной частью модели, в противном случае отношения моделируются с помощью атрибутов. Важными являются бизнес-классы, описывающие часть прикладной области. Не имеющими большого значения классами являются компоненты библиотеки, такие как классы String, Date и Time.
До известной степени выбор явного указания ассоциации или атрибутов является вопросом стиля. Лучшим всегда будет тот подход, в котором модель и диаграммы выражают задачу ясно и точно. Часто представленная на диаграмме ассоциация с другим классом более понятна, чем это же отношение, смоделированное как атрибут, который заметить намного сложнее. Если кратность цели больше 1, это ясно показывает, что целевой класс важен для модели. Таким образом, для моделирования такого отношения используются ассоциации.
Если кратность целевого класса равна 1, целевой объект может быть только частью исходного, и поэтому не стоит показывать отношение с ним как ассоциацию. Возможно, лучше смоделировать его как атрибут. Это особенно справедливо, если кратность равна 1 на обоих концах отношения, когда ни источник, ни цель не могут существовать самостоятельно.

Запись опубликована в рубрике Компьютеры и интернет с метками . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

code