Temat: Asocjacje vs Agregacje/Kompozycje

Witam,

Mniej więcej czuję różnicę pomiędzy agregacją a kompozycją ale mam problem ze znalezieniem różnic pomiędzy asocjacją a agregacją (nie kompozycją).

Czy może jest tak, że każda asocjacja to agregacja albo kompozycja ? Jeśli nie to czy ktoś mógłby dać przykłada związku który jest asocjacją a nie jest agregacją/kompozycją ?Krzysztof Sorocki edytował(a) ten post dnia 18.02.13 o godzinie 17:43
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Asocjacje vs Agregacje/Kompozycje

Krzysztof Sorocki:
Witam,

Mniej więcej czuję różnicę pomiędzy agregacją a kompozycją ale mam problem ze znalezieniem różnic pomiędzy asocjacją a agregacją (nie kompozycją).

Czy może jest tak, że każda asocjacja to agregacja albo kompozycja ? Jeśli nie to czy ktoś mógłby dać przykłada związku który jest asocjacją a nie jest agregacją/kompozycją ?

agregacja i kompozycja to szczególny rodzaj asocjacji

Temat: Asocjacje vs Agregacje/Kompozycje

Czyli każda asocjacja jest albo agregacją albo kompozycją, tak ?
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Asocjacje vs Agregacje/Kompozycje

Krzysztof Sorocki:
Czyli każda asocjacja jest albo agregacją albo kompozycją, tak ?

nie, niektóre mogą nimi być :), to zależy co chcesz wyrazić, to raczej tak jest:
- jeżeli obiekty A i B są "jakos z soba powiązane" to łączy je asocjacja
- jeżeli obiekt B jest integralną i nierozłączna częścią obiektu A, to znaczy, że B jest zagregowane z B (czarny rąb jest przy A)
- jeżeli ten związek dopuszcza odłączenie B od A to będzie to agregacja

pojęcie agregacji budzi wiele kontrowersji bo składnik (obiekt skomponowany) w danym momencie albo jest częścią całości do której należy albo nie i wielu nie używa agregacji (ja w zasadzie także), ale UML zawiera takie pojęcie, użycie agregacji informuje czytelnika, że odłączenie jest dopuszczalne, to pojawia się pojęcie obiektów które mogą nie mieć tożsamości, ale to dłuższy temat, chyba wypada zaprosić na szkoleni :)
Kamil Grzybek

Kamil Grzybek Architekt
Oprogramowania .NET

Temat: Asocjacje vs Agregacje/Kompozycje

Asocjacja jest "słabszą" formą agregacji.

Przykład : klient może umówić się na spotkanie. Raczej nie powiemy, że spotkanie składa się z klienta albo że klient jest częścią spotkania. Oczywiście na siłę możemy taką relację zamodelować jako agregację ale jest to wg mnie mniej intuicyjne.
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Asocjacje vs Agregacje/Kompozycje

Kamil Grzybek:
Asocjacja jest "słabszą" formą agregacji.

Przykład : klient może umówić się na spotkanie. Raczej nie powiemy, że spotkanie składa się z klienta albo że klient jest częścią spotkania. Oczywiście na siłę możemy taką relację zamodelować jako agregację ale jest to wg mnie mniej intuicyjne.

Asocjacja to każdy związek pojęciowy dwóch klas, agregacja i kompozycja to specyficzny przypadek gdy związek ten ma charakter "całość część", kompozycja to 'silniejsza" forma agregacji, tu "część" musi wystąpić i tyle... wiąże się to także z rygorem na tożsamość klasy (klasa agregowana nie musi mieć tożsamości bo występuje zawsze jako część, np. moje buty nie mają numeru seryjnego ale one są zawsze czyjeś i "buty Żelińskiego" identyfikują je jednoznacznie.

Spotkanie to fakt w czasie, by zaistniało muszą być co najmniej dwie osoby, spotkanie to sytuacja gdy więcej niż jedna osoba znajdzie się w tym samym czasie i miejscu... co do modelu spotkania, to może to być np. obiekt reprezentujący spotkanie, z atrybutami data, godzina, miejsce (zapis w kalendarzu) i skomponowanymi 9agregowanymi) klasami reprezentującymi listę obecności czyli imię, nazwisko itp.

Polecam UML superstructure 2.4.1. rozdz. 7.3.3 Association:

An association may represent a composite aggregation (i.e., a whole/part relationship). Only binary associations can be aggregations. Composite aggregation is a strong form of aggregation that requires a part instance be included in at most one composite at a time. If a composite is deleted, all of its parts are normally deleted with it. Note that a part can (where allowed) be removed from a composite before the composite is deleted, and thus not be deleted as part of the composite.Jarek Żeliński edytował(a) ten post dnia 24.02.13 o godzinie 22:48
Andrzej Sibik

Andrzej Sibik Analityk/Projektant
IT

Temat: Asocjacje vs Agregacje/Kompozycje

Wg mojego rozumienia zacytowanego fragmentu standardu UML, niektóre stwierdzenia dot. kompozycji stoją z nim w sprzeczności.
Jarek Żeliński:

[...] kompozycja to 'silniejsza" forma agregacji, tu "część" musi wystąpić i tyle...

To nieprawda, że w kompozycji "część" zawsze musi występować. W kompozycji może być dopuszczalna liczność 0 po stronie "części".
Natomiast to co standard mówi o kompozycji (i co odróżnia kompozycję od zwykłej agregacji), to to, że w kompozycji:
- część może być przyporządkowana (w określonym momencie czasu) do najwyżej jednej (!) całości (maksymalna liczność po stronie całości = 1), i że
- zwykle (!) cykl życia części jest związany z całością (czyli część przestaje istnieć wraz ze 'zniszczeniem' całości).

I z wcześniejszego postu:
- jeżeli ten związek dopuszcza odłączenie B od A to będzie to agregacja

Wg cytowanego fragmentu standardu, odłączenie jest możliwe także dla kompozycji.
wiąże się to także z rygorem na tożsamość klasy (klasa agregowana nie musi mieć tożsamości bo występuje zawsze jako część, np. moje buty nie mają numeru seryjnego ale one są zawsze czyjeś i "buty Żelińskiego" identyfikują je jednoznacznie.

Klasa agregowana [w kompozycji] nie zawsze występuje jako część (bo może być odłączona od całości). W takim przypadku obiekty klasy "część" muszą posiadać także 'samodzielną' tożsamość (muszą być identyfikowalne także bez "całości").
A "buty Żelińskiego" nie zawsze są czyjeś - po wystawieniu na ulicę (śmietnik) stają się niczyje (być może tylko tymczasowo - mamy trochę bezdomnych w Polsce), a jednak istnieją nadal i są identyfikowalne - może po numerze seryjnym jeśli go mają (bo np. była to seria limitowana dla koneserów ;-) )
Andrzej Sibik

Andrzej Sibik Analityk/Projektant
IT

Temat: Asocjacje vs Agregacje/Kompozycje

Krzysztof Sorocki:

[...] Jeśli nie to czy ktoś mógłby dać przykłada związku który jest asocjacją a nie jest agregacją/kompozycją ?

Asocjacją jest np. związek między Tobą a Twoim ojcem - nie jesteś "częścią" swojego ojca.

Ale za to jesteś częścią (composition) "Rodziny", rozumianej jako najmniejsza komórka społeczna - składającej się z Ciebie, Twoich rodziców i rodzeństwa.

Wybacz "osobisty" charakter tego przykładu, ale ten wydał mi się najbardziej czytelny i oczywisty :-)
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Asocjacje vs Agregacje/Kompozycje

Andrzej Sibik:
A "buty Żelińskiego" nie zawsze są czyjeś - po wystawieniu na ulicę (śmietnik) stają się niczyje (być może tylko tymczasowo - mamy trochę bezdomnych w Polsce), a jednak istnieją nadal i są identyfikowalne - może po numerze seryjnym jeśli go mają (bo np. była to seria limitowana dla koneserów ;-) )

Przejściowo są częścią konkretnego identyfikowanego śmietnika :), Śmietnik ma adres, buty nadal nie maja swojego ID...;), nie da się butów odstawić w niebyt, zawsze "gdzieś są", zaś nie mając identyfikatora zdanie "Żeliński wyrzucił buty, można je sobie wziąć", jedyne co pozostaje to "Żeliński wyrzucił buty, można je sobie wziąć ze śmietnika na rogu Jerozolimskich i Chałubińskiego" (o ile jest tam tylko jeden śmietnik)..... czyli nadal są składnikiem czego...

nie noszę butów dla koneserów ale przemyśle ;) może warto zacząć

przyznaję także, że kilka skrótów myślowych popełniłem i uwagi były zasadne...
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Asocjacje vs Agregacje/Kompozycje

Andrzej Sibik:
Krzysztof Sorocki:

[...] Jeśli nie to czy ktoś mógłby dać przykłada związku który jest asocjacją a nie jest agregacją/kompozycją ?

Asocjacją jest np. związek między Tobą a Twoim ojcem - nie jesteś "częścią" swojego ojca.

Ale za to jesteś częścią (composition) "Rodziny", rozumianej jako najmniejsza komórka społeczna - składającej się z Ciebie, Twoich rodziców i rodzeństwa.

Wybacz "osobisty" charakter tego przykładu, ale ten wydał mi się najbardziej czytelny i oczywisty :-)

wypada dodać tylko, ze w paradygmacie obiektowym asocjacja to związek pojęciowy między pojęciami (klasyfikatorami) a nie relacja pomiędzy bytami rodem z ERD... asocjacja może być implementowana jako trwałe połączenie pomiędzy obiektami (rodzina jako kolekcja) ale nie musi. Implementacja Rodziny może wyglądać jak kolekcja niepowiązanych obiektów, z których, każdy ma prawo wywołać operację TataGlowaRodziny.DajTroszkęKasy(), wiedzę o tym, że to rodzina ma UrzadStanuCywilnego i tam należy się co do tego upewniać :)
Andrzej Sibik

Andrzej Sibik Analityk/Projektant
IT

Temat: Asocjacje vs Agregacje/Kompozycje

A tu z kolei ja popełniłem skrót myślowy :-) więc wyjaśniam:

Asocjacją byłoby powiązanie rodzinne między różnymi osobami - a więc klasa Osoba z asocjacją zwrotną (do siebie samej).
Związek między Krzysztofem a jego ojcem (dwa obiekty - wystąpienia klasy Osoba) byłby _wystąpieniem_ tej asocjacji (bo asocjacja też jest klasyfikatorem!).

Natomiast jeśli chodzi o nawiązanie do ERD, to jednak uważam tę uwagę za nietrafioną. ERD jako metoda modelowania także jest oparta na koncepcji klasyfikatorów i powiązań między nimi. Zarówno w przypadku UML jak i ERD można mówić o poziomie M0 oraz M1 - tu i tu są byty z określonej dziedziny i reprezentujące je pojęciowo klasyfikatory, które przedstawiamy w modelu.

PS. W kwestię tego, kto ma wiedzę o rodzinie, i co w ogóle znaczy "rodzina" oraz relacja "rodzic"-"dziecko", wolałbym się już w obecnych okolicznościach nie zagłębiać... ;-)
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Asocjacje vs Agregacje/Kompozycje

Natomiast jeśli chodzi o nawiązanie do ERD, to jednak uważam tę uwagę za nietrafioną. ERD jako metoda modelowania także jest oparta na koncepcji klasyfikatorów i powiązań między nimi. Zarówno w przypadku UML jak i ERD można mówić o poziomie M0 oraz M1 - tu i tu są byty z określonej dziedziny i reprezentujące je pojęciowo klasyfikatory, które przedstawiamy w modelu.

UML diagram klas może posłużyć do stworzenia modelu pojęciowego i do stworzenia modelu struktury kodu (logiki systemu). Co do ERD faktycznie wysokopoziomowy "conceptual model" pełni role modelu pojęciowego analogicznie do diagramu klas jako modelu pojęciowego, jednak podobieństwo (ale nei zgodność) szybko się kończy bo:
- UML dopuszcza związek wiele-do-wielu a ERD nie
- w "schodzeniu niżej" model obiektowy to przede wszystkim operacje klas a w ERD to wyłącznie atrybuty (cechy) encji.. (atrybuty w modelu dziedziny to osytatnia rzecz jaką sie analizuje i projektuje a nie pierwsza).

dlatego osobiście nie porównywałbym bym jednak tych dwóch notacji
Mateusz Kurleto

Mateusz Kurleto Szukamy wybitnych
talentów do
świetnego zespołu IT
w Gdańsku

Temat: Asocjacje vs Agregacje/Kompozycje

Jarek Żeliński:
Natomiast jeśli chodzi o nawiązanie do ERD, to jednak uważam tę uwagę za nietrafioną. ERD jako metoda modelowania także jest oparta na koncepcji klasyfikatorów i powiązań między nimi. Zarówno w przypadku UML jak i ERD można mówić o poziomie M0 oraz M1 - tu i tu są byty z określonej dziedziny i reprezentujące je pojęciowo klasyfikatory, które przedstawiamy w modelu.

UML diagram klas może posłużyć do stworzenia modelu pojęciowego i do stworzenia modelu struktury kodu (logiki systemu). Co do ERD faktycznie wysokopoziomowy "conceptual model" pełni role modelu pojęciowego analogicznie do diagramu klas jako modelu pojęciowego, jednak podobieństwo (ale nei zgodność) szybko się kończy bo:
- UML dopuszcza związek wiele-do-wielu a ERD nie
- w "schodzeniu niżej" model obiektowy to przede wszystkim operacje klas a w ERD to wyłącznie atrybuty (cechy) encji.. (atrybuty w modelu dziedziny to osytatnia rzecz jaką sie analizuje i projektuje a nie pierwsza).

dlatego osobiście nie porównywałbym bym jednak tych dwóch notacji
Ja również nie zajmowałbym sie takim porównaniem, ale ze zgoła innego powotu - a toż takiego, że jeden diagram słuzy do przedstawiania związków encji, co reprezentuje koncepcje matematyki relacji. Drugie zaś - mam du na myśli diagram klas UML - służy do modelowania zgodnie z paradygmatem obiektowym. Matematyka relacji i koncepcja obiektowości nie są tożsame - chociaż nie jest prawdą, że diagram ERD nie umożliwia przedstawienia relacji wielu-do wielu - jest to jak najbardzije możliwe.
Istnieją metody mapowania (czy może transkrypcji?) jednych modeli w drugie - ale nie jest to działanie 1:1 i nie jest jednoznacznie odwracalne.
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Asocjacje vs Agregacje/Kompozycje

Mateusz Kurleto:
Matematyka relacji i koncepcja obiektowości nie są tożsame - chociaż nie jest prawdą, że diagram ERD nie umożliwia przedstawienia relacji wielu-do wielu - jest to jak najbardzije możliwe.

Jak ?
Mateusz Kurleto

Mateusz Kurleto Szukamy wybitnych
talentów do
świetnego zespołu IT
w Gdańsku

Temat: Asocjacje vs Agregacje/Kompozycje

Jarek Żeliński:
Mateusz Kurleto:
Matematyka relacji i koncepcja obiektowości nie są tożsame - chociaż nie jest prawdą, że diagram ERD nie umożliwia przedstawienia relacji wielu-do wielu - jest to jak najbardzije możliwe.

Jak ?

Obrazek
Mateusz Kurleto edytował(a) ten post dnia 27.02.13 o godzinie 11:09

Temat: Asocjacje vs Agregacje/Kompozycje

Tak zupełnie na marginesie: związku "wiele do wiele" :) To nie jest relacja w myśl teorii modelu relacyjnego (jest nią tabela) i warto unikać powielania tego, bo potem młodzi informatycy na pytanie o model relacyjny wychodzą od "aaa, inner join, jeden do wiele itd." :)
Mateusz Kurleto

Mateusz Kurleto Szukamy wybitnych
talentów do
świetnego zespołu IT
w Gdańsku

Temat: Asocjacje vs Agregacje/Kompozycje

Adrian Olszewski:
Tak zupełnie na marginesie: związku "wiele do wiele" :) To nie jest relacja w myśl teorii modelu relacyjnego (jest nią tabela) i warto unikać powielania tego, bo potem młodzi informatycy na pytanie o model relacyjny wychodzą od "aaa, inner join, jeden do wiele itd." :)
Święta racja. Pozwoliłem sobie na pewien skrót myślowy (czasem mam wrażenie, że te skróty myślowe to jest źródło wszelkiego, w dyskusji, zła).
Jarosław Żeliński

Jarosław Żeliński Analityk i
Projektant Systemów

Temat: Asocjacje vs Agregacje/Kompozycje

Mateusz Kurleto:
Jarek Żeliński:
Mateusz Kurleto:
Matematyka relacji i koncepcja obiektowości nie są tożsame - chociaż nie jest prawdą, że diagram ERD nie umożliwia przedstawienia relacji wielu-do wielu - jest to jak najbardzije możliwe.

Jak ?

Obrazek

Uważasz że to nie łamie syntaktyki ERD (rachunku relacji)?
Widze, że powiedziano na czym rzecz polega :) Jarek Żeliński edytował(a) ten post dnia 27.02.13 o godzinie 13:22

Następna dyskusja:

Enterprise architect - asoc...




Wyślij zaproszenie do