Дисциплины > Реализация

Реализация отношений между классами

(1/3) > >>

Максим:
Здравствуйте, уважаемые форумчане. Не могу разобраться чем отличается реализация отношения ассоциации от агрегации и композиции в коде например в java или си шарпе? Во всех трех случаях необходимо создать в классе поле объектного типа. А в чем разница между ними я не могу понять. Ведь каждое отношение является самостоятельным.

Galogen:
Разница как раз в реализации.

Ассоциация - это семантическая концепция, а агрегация или композиция - реализация связи в коде. Ассоциация в общем смысле связь типа has a, т.е. связь принадлежности. В зависимости от силы связи принадлежности - она сводится или к агрегации (share) или композиции.

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

Максим:
Если я вас правильно понял, то однонаправленная ассоциация это как-бы абстрактное понятие, которое используется на начальном этапе проектирования и впоследствии в коде уже принимает вид либо агрегации, либо композиции. Верно я уловил смысл?

Galogen:

--- Цитата: Максим от 05 Октября 2014, 15:40:46 ---Если я вас правильно понял, то однонаправленная ассоциация это как-бы абстрактное понятие, которое используется на начальном этапе проектирования и впоследствии в коде уже принимает вид либо агрегации, либо композиции. Верно я уловил смысл?

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

Григорий Печенкин:

--- Цитата: Максим от 05 Октября 2014, 12:20:23 ---Здравствуйте, уважаемые форумчане. Не могу разобраться чем отличается реализация отношения ассоциации от агрегации и композиции в коде например в java или си шарпе? Во всех трех случаях необходимо создать в классе поле объектного типа. А в чем разница между ними я не могу понять. Ведь каждое отношение является самостоятельным.

--- Конец цитаты ---

Статически реализация может быть одной и той же (в C++, например, любое из этих отношений может быть реализовано указателями на объект). В динамике тип отношения однозначно влияет на время жизни связанного объекта, пожалуй, только в отношении композиции: вложенный объект должен создаваться вместе (или после) создания контейнера и уничтожаться вместе (или до) уничтожения контейнера. То есть существование вложенного объекта без контейнера не имеет смысла.

Примеры здесь:
http://ootips.org/uml-hasa.html

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 
Перейти к полной версии