Zdaję sobie sprawę z różnic koncepcyjnych między agregacją a kompozycją. Czy ktoś może mi powiedzieć, jaka jest różnica w implementacji między nimi w Javie z przykładami?
java
relationship
aggregation
composition
Rajath
źródło
źródło
Odpowiedzi:
Kompozycja
Zbiór
W przypadku kompozycji Silnik jest całkowicie zamknięty w samochodzie. Świat zewnętrzny nie może uzyskać odniesienia do silnika. Silnik żyje i umiera razem z samochodem. W przypadku agregacji samochód wykonuje swoje funkcje również za pośrednictwem silnika, ale nie zawsze jest on wewnętrzną częścią samochodu. Silniki można wymieniać, a nawet całkowicie usuwać. Nie tylko to, świat zewnętrzny może nadal mieć odniesienie do silnika i majstrować przy nim niezależnie od tego, czy jest w samochodzie.
źródło
new Engine(EngineSpecs)
wywołania, nawet jeśli nie było samochodu. Sposobem na osiągnięcie kompozycji jest stworzenie Engine jako klasy wewnętrznej, tak aby obiekt silnika był zawsze tworzony w odniesieniu do obiektu samochoduUżyłbym fajnego przykładu UML.
Weź uniwersytet, który ma od 1 do 20 różnych wydziałów, a każdy wydział ma od 1 do 5 profesorów. Istnieje związek między uniwersytetem a jego wydziałami. Istnieje połączenie agregacyjne między wydziałem a jego profesorami.
Kompozycja to po prostu MOCNA agregacja, jeśli zniszczona zostanie uczelnia, to zniszczeniu powinny ulec również wydziały. Ale nie powinniśmy zabijać profesorów, nawet jeśli ich wydziały znikną.
W java:
Coś wokół tego.
EDYCJA: przykład na żądanie
Klasa uniwersytecka
Klasa działu
Klasa profesorska
Implementacja jest dyskusyjna, ponieważ zależy od tego, w jaki sposób musisz poradzić sobie z tworzeniem, zatrudnianiem, usuwaniem itp. Nieistotne dla PO
źródło
W podanym adresie URL poniżej znajduje się świetne wyjaśnienie.
http://www.codeproject.com/Articles/330447/Understanding-Association-Aggregation-and-Composit
Proszę sprawdzić!!!
źródło
Prosty program do kompozycji
źródło
Różnica polega na tym, że każda kompozycja jest agregacją, a nie odwrotnie.
Ustalmy warunki. Agregacja jest metatermem w standardzie UML i oznacza ZARÓWNO kompozycję, jak i wspólną agregację, nazywaną po prostu współużytkowaną . Zbyt często nazywa się to nieprawidłowo „agregacją”. To ZŁE, bo kompozycja też jest agregacją. Jak rozumiem, masz na myśli „udostępniony”.
Dalej od standardu UML:
Tak więc stowarzyszenie University to cathedras jest kompozycją, ponieważ katedra nie istnieje poza uniwersytetem (IMHO)
Oznacza to, że wszystkie inne skojarzenia można narysować jako wspólne agregacje, jeśli przestrzegasz tylko pewnych zasad własnych lub kogoś innego. Zajrzyj też tutaj .
źródło
W prostych słowach :
Zarówno skład, jak i agregacja są skojarzeniami. Kompozycja -> Silna relacja Has-A Agregacja -> Słaba relacja Has-A.
źródło
Najpierw musimy porozmawiać o tym, jaka właściwie różnica między
Aggregation
iComposition
ma być na tej samej stronie.natomiast
Teraz agregację można po prostu osiągnąć poprzez posiadanie własności jednego podmiotu w innym, jak poniżej:
W przypadku kompozycji konieczne jest, aby obiekt zależny był zawsze tworzony z tożsamością skojarzonego z nim obiektu. Możesz użyć klasy wewnętrznej do tego samego.
źródło
Agregacja a kompozycja
Agregacja zakłada związek, w którym dziecko może istnieć niezależnie od rodzica. Na przykład Bank i pracownik, usuń bank, a pracownik nadal istnieje.
mając na uwadze, że Kompozycja zakłada związek, w którym dziecko nie może istnieć niezależnie od rodzica. Przykład: człowiek i serce, serce nie istnieje oddzielnie od człowieka.
Relacja agregacji to relacja „ma-a”, a kompozycja jest relacją „częścią”.
Kompozycja to silne stowarzyszenie, podczas gdy agregacja jest słabym stowarzyszeniem.
źródło
Oba typy są oczywiście skojarzeniami i nie są tak naprawdę przypisane ściśle do takich elementów języka. Różnica polega na celu, kontekście i sposobie modelowania systemu.
Jako praktyczny przykład porównaj dwa różne typy systemów z podobnymi obiektami:
System rejestracji samochodów, który przede wszystkim śledzi samochody, ich właścicieli itp. Nie interesuje nas tutaj silnik jako odrębna jednostka, ale nadal możemy mieć atrybuty związane z silnikiem, takie jak moc i rodzaj paliwa. Tutaj Silnik może być złożoną częścią jednostki samochodowej.
System zarządzania warsztatem samochodowym, który zarządza częściami samochodowymi, serwisowaniem samochodów i wymianą części, może nawet kompletnych silników. Tutaj możemy nawet mieć zapasy silników i musimy śledzić je i inne części oddzielnie i niezależnie od samochodów. Tutaj Silnik może być zagregowaną częścią podmiotu samochodowego.
Sposób implementacji tego w swoim języku jest mniej istotny, ponieważ na tym poziomie takie kwestie jak czytelność są o wiele ważniejsze.
źródło