Agregacja vs skład vs Asocjacja vs Asocjacja bezpośrednia

[[0]}przeglądam swoją wiedzę z programowania obiektowego. W ramach tematu relacji między klasami spotkałem się z pewnymi relacjami, które są dla mnie nieco niejednoznaczne.

Wiem, że zależność "używa-a" i dziedziczenie "jest-a", ale trochę nie znam agregacji, kompozycji, asocjacji i bezpośredniego Asocjacji; także, która z nich jest relacją "ma-a". Niektórzy używają agregacji zamiennie z asocjacją.

Co To jest bezpośrednie skojarzenie? Ponadto, co jest Skład? W diagramach UML strzałki, które je reprezentują, są różne. Byłabym bardzo wdzięczna, gdybyś mogła mi to wyjaśnić.

Author: rook, 2014-02-23

4 answers

Należy pamiętać, że istnieją różne interpretacje definicji "asocjacji". Moje poglądy poniżej są w dużej mierze oparte na tym, co można przeczytać w książkach certyfikacyjnych Oracle i przewodnikach po studiach.

Tymczasowe Stowarzyszenie

Użycie wewnątrz metody , jej podpis lub jako wartość zwracana. To nie jest odniesienie do konkretnego obiektu.

przykład: parkuję samochód w garażu.

Tymczasowe Stowarzyszenie UML

Skład Stowarzyszenie

Tak zwany "silny związek ": instancja powiązanego obiektu jest często trudna kodowane wewnątrz konstruktora obiektu. Nie można go ustawić z poza obiektem. (Skład nie może być wiele do wielu związek.)

przykład: dom składa się z kamieni.

Skład UML

Bezpośrednie skojarzenie

To jest " słabe związki ". Obiekty mogą żyć niezależnie i są zwykle setery lub inne sposoby wstrzykiwania zależnych obiektów.

przykład: Samochód może mieć pasażerów.

Direct Association UML

Asocjacja agregacji

Bardzo podobny do bezpośredniego skojarzenia. Jest to również "słaba relacja " z niezależnymi obiektami. Jednak tutaj powiązane obiekty są kluczową częścią obiektu zawierającego.

przykład: Samochód powinien mieć Opony.

Agregacja UML

Uwaga: zarówno bezpośrednie Asocjacje, jak i Asocjacje agregacyjne są często uogólniane jako "Asocjacje". Różnica jest raczej subtelna.

 94
Author: bvdb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-31 11:37:49

Na przykład Cały punkt OOP jest to, że Twój kod replikuje obiekty świata rzeczywistego, dzięki czemu Twój kod jest czytelny i możliwy do utrzymania.

  1. Stowarzyszenie

Asocjacja w zasadzie to Klasa A używa klasy B. Jako przykład

    [[3]}pracownik korzysta z usług autobusów / pociągów do transportu.
  • Komputer używa klawiatury jako urządzenia wejściowego

A w diagramie UML Asocjacja jest oznaczana przez normalną główkę strzałki.

  1. agregacja Klasa A zawiera klasę B lub klasę A ma instancję klasy B. Agregacja jest używana, gdy życie obiektu jest niezależne od obiektu kontenera, ale nadal obiekt kontenera jest właścicielem obiektu agregowanego.

Więc jeśli usuniemy klasę A, to nie oznacza, że Klasa B również zostanie usunięta , jako przykład (nie lub wielu nauczycieli może należeć do jednego lub wielu wydziałów) relacja między nauczycielami a wydziałami jest agregowana.

  1. Skład Klasa A posiada klasę B. Jako przykład , ciało składa się z ramienia, głowy , nóg, BankAccount składa się z salda i Transakcjihistoria. Więc jeśli Klasa be zostanie usunięta, wtedy również Klasa B zostanie usunięta.
 10
Author: Abb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-21 12:01:20

Bezpośrednie skojarzenie nie ma nic wspólnego z pozostałymi trzema. Nie należy do UML w ogóle, jest to IBM requirements modelling term.

Co do innych,

Asocjacja A - > B jest dzieckiem zależności. Asocjacja oznacza, że A (lub jego instancja) ma jakiś łatwy sposób, aby dostać się do instancji B. na przykład, A.x. y. b. lub przez funkcję, lub przez jakąś zmienną lokalną. Lub przez bezpośrednie odniesienie lub wskaźnik, lub coś innego (istnieje wiele języków na świecie). Jak widzisz, nie ma ścisłej granicy między zależnością a Stowarzyszeniem.

Jednym z atrybutów Asocjacji jest agregacja, może mieć wartości: None, shared (często niepoprawnie nazywane agregacją) i composition.

Jeśli a (lub instancja) ma jakieś (lub jedną) instancje B tak, że zniszczenie asocjacji oznacza zniszczenie instancji B, jest to kompozycja.

Jeśli ty lub autor narzędzia zdecydowałeś, że niektórzy mają-związek, który jest słabszy niż kompozycja, musi być specjalnie pokazane, można użyć shared agregacji. Zwykle jest to zbiór odniesień do B W A.

Jest kilka ciekawszych atrybutów skojarzeń. Zobacz tutaj jeśli jesteś zainteresowany.

 6
Author: Gangnus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:59

Związek między typami obiektów klasyfikuje relacje między obiektami tych typów. Na przykład, Stowarzyszenie Person-isEmployedBy-Enterprise może klasyfikować relacje PeterMiller-isEmployedBy-IBM, SusanSmith-isEmployedBy-IBM i SarahAnderson-Isemployedby-Google pomiędzy obiektami PeterMiller, SusanSmith i SarahAnderson typu Person oraz Google i IBM typu Enterprise. Innymi słowy, Asocjacje są typami relacji z dwoma lub więcej typami obiektów uczestniczących w oni. Związek pomiędzy dwoma typami obiektów nazywa się binarnym. Podczas gdy Asocjacje binarne są bardziej powszechne, możemy również mieć do czynienia z asocjacjami n-ary, gdzie n jest liczbą naturalną większą niż 2. Na przykład, Person - isTreatedIn - Hospital - for - Disease jest 3-arowym ("trójkowym") asocjacją pomiędzy typami obiektówPerson, Hospital i Disease.

Myślę, że przez "bezpośrednie skojarzenie" masz na myśli kierunkowe (lub kierowane) skojarzenie, które jest asocjacją (z klasą domeny i klasą zakresu) to reprezentuje właściwość referencyjną w swojej klasie domeny. Taki związek Kierunkowy ma "kropkę własności" na swoim docelowym końcu.

Zobacz Ten rozdział książki aby dowiedzieć się więcej o stowarzyszeniach.

I zobacz moją odpowiedź na to pytanie SO dla wyjaśnienia agregacji i kompozycji.

 4
Author: Gerd Wagner,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:41