Асоциации срещу агрегиране срещу композиция срещу връзка между използване, PHPClub - клуб на разработчиците

ядосан бобър

Изучавам книга на Мат Зандстра, наречена "PHP. Обекти, модели и техники за програмиране". Страници 146 -148 описват възможни връзки между обекти и предоставят UML диаграми за тях. Това са отношения като "Асоциация", "Агрегация", "Композиция". Каква е разликата между тези отношения и какви са техните характеристики? Може би някъде има добро описание на тези взаимоотношения? Те биха били полезни на всеки, защото без тях разбирането на много от моделите става трудно.

АКТУАЛИЗИРАНЕ. В заглавието на темата е използван терминът "Отношение на ползване", но този термин е оставен. Няма как да се коригира.

Г-н М:)лер
ядосан бобър
ядосан бобър
Г-н М:)лер

корпусВярно е, асоциацията е едновременно композиция и агрегация. но в последните 2 се казва и за мястото на съхранение на предмета. в първия случай това се премълчава, важно е само да има връзка.

когато се появи този въпрос, задайте си $a=new A какво ще се случи, ако унищожим обекта $a, $this->c и $this->d[] ще бъдат унищожени с цялото им съдържание или ще има нещо друго в паметта?

Агрегирането и съставянето са едни и същи в смисъл, че $this->fooObject са и двете.

Значението е във връзката между $this и fooObject.

Г-н М:)лер

Агрегирането (агрегиране чрез препратка) е връзка част-цяло между два еднакви обекта, когато един обект (контейнер) има връзка към друг обект. И двата обекта могат да съществуват независимо: ако контейнерът е унищожен, то съдържанието му не е.

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

Асоциация - просто има връзка към някакъв обект, с който трябва да работи по някакъв начин. Например в f-tsii ще напишете global $var, ще получите достъп до глобална променлива. И тук, чрез някакъв вид sv-in, можете да работите с желания конкретен обект (а именно екземпляр)

Композицията е мястото, където всъщност един обект се състои от други обекти, както динята се състои от пулп, семена и кора.

Агрегирането е почти същото като състава, но например има две опашки от клиенти за сайтове на Joomla. И двете опашки се състоят от обекти хора, но всъщност човек не зависи от опашката и може да бъде в различни опашки.

Относно унищожаването, тези крака растат от GOF с C ++ и деструктори, това не обяснява семантичната разлика.

Кое е кое, аз самият бъркам през цялото време =)

Като цяло, това не е нещо, с което си струва да се занимавате; има много по-разбираеми и полезни модели, без да танцувате около фините разлики между has_a, is_a и contains. Всичко се появи в GoF на примера на C ++, където управлението на паметта е важно; при GC разликата става чисто семантична и почти незабележима.

Г-н М:)лер
ядосан бобър

Относно унищожаването, тези крака растат от GOF с C ++ и деструктори, това не обяснява семантичната разлика.

Кое е кое, аз самият бъркам през цялото време =)

Като цяло, това не е нещо, с което си струва да се занимавате; има много по-разбираеми и полезни модели, без да танцувате около фините разлики между has_a, is_a и contains. Всичко се появи в GoF на примера на C ++, където управлението на паметта е важно; при GC разликата става чисто семантична и почти незабележима.