Rozumiem, jaki jest skład OOP, ale nie jestem w stanie jasno zrozumieć, czym jest agregacja. Czy ktoś może wyjaśnić?
object-oriented
Vinoth Kumar CM
źródło
źródło
From http://en.wikipedia.org/wiki/Object_composition
Tak więc - gdy masz stosunek własności do kompozycji, posiadany obiekt jest również niszczony, gdy właścicielem jest - agregacja (i zawarte w nim obiekty) może istnieć niezależnie.
-
Aktualizacja: Przeprosiny - z perspektywy czasu ta odpowiedź jest zbyt uproszczona.
c.batt podaje doskonałą definicję w swojej odpowiedzi: Agregacja vs Kompozycja
źródło
Nie ma jednego wyjaśnienia. Różni autorzy oznaczają różne rzeczy przez agregację. Większość tak naprawdę nie ma na myśli niczego konkretnego.
źródło
Skład jest stowarzyszeniem
Agregacja jest stowarzyszeniem
Skład jest mocny Association (Jeśli życie zamkniętego obiektu całkowicie zależy od obiektu kontenera, nazywa się to silny związek)
Agregacja jest słaby Association (Jeśli życie zamkniętego obiektu nie zależy od obiektu kontenera, nazywa się słaby stowarzyszenie)
Przykład:
źródło
Kompozycja (mieszanina) to sposób łączenia prostych obiektów lub typów danych w bardziej złożone. Kompozycje są kluczowym elementem składowym wielu podstawowych struktur danych
Agregacja (kolekcja) różni się od zwykłego składu tym, że nie implikuje własności. W składzie, gdy obiekt będący właścicielem jest niszczony, podobnie jak zawarte w nim obiekty. Podsumowując, niekoniecznie jest to prawda
Oba oznaczają relacje między przedmiotem i różnią się jedynie siłą.
Notacje UML dla różnego rodzaju zależności między dwiema klasami
Skład : ponieważ silnik jest częścią samochodu, związek między nimi jest skład. Oto jak są one implementowane pomiędzy klasami Java.
Agregacja : Ponieważ organizacja ma osobę jako pracownika, relacja między nimi jest agregacją. Oto jak wyglądają pod względem klas Java
Źródło
źródło
agregacja jest prostą kolekcją, jak worek kulek
skład sugeruje zależności wewnętrzne / funkcjonalne, takie jak zawiasy na pudełku
samochody gromadzą pasażerów; wsiadają i wysiadają bez naruszania funkcjonalności samochodu
opony są częściami; usuń jeden, a samochód przestanie działać poprawnie
[uwaga: koło zapasowe jest sumą!]
źródło
Zawsze patrzę na kompozycję jako „potrzebuje”, tzn. Samochód potrzebuje silnika, a agregację na „rzeczy powiązane z określonym celem”. Tak więc pozostając przy analogii samochodu, moją agregacją może być przedstawienie podróży, która może obejmować połączenie samochodu i pasażerów. Podróż nie jest właścicielem samochodu ani pasażerów, zbieram dane związane z konkretnym scenariuszem. Po zakończeniu podróży samochód i pasażerowie kontynuują podróż. Kiedy samochód się kończy, samochód i jego silnik są zwykle niszczone razem.
źródło
Semantycznie wszystkie zestawy składają się z podzbiorów, prawda? W związku z tym:
Agregacja ma miejsce, gdy te podzbiory istnieją niezależnie od zbioru nadrzędnego. Jako monitor można odłączyć od komputera, aby podłączyć go do innego.
Kompozycja ma miejsce, gdy te podzbiory zależą od istnienia zbioru ojca. Ponieważ liść jest częścią drzewa, a wątroba jest częścią ciała.
Te koncepcje mówią o rodzaju zależności między dwoma obiektami lub klasami, koncepcyjnie. Bezpośrednio w programie, w agregacji, gdy obiekt-ojciec usuwa, obiekty-agregaty również powinny zostać usunięte. W tym samym scenariuszu dla kompozycji złożone obiekty syn pozostaną, a następnie obiekt-ojciec zostanie wydany.
źródło
A może ten prosty przykład:
Tablica obiektów jest kompozycją. Tablica wskaźników do obiektów jest agregacją.
Jeśli usunę pierwszy, jego zawartość zniknie wraz z nim. Drugi natomiast może zniknąć bez wpływu na istnienie jego członków, chyba że istnieje specjalna metoda, która usuwa każdy obiekt po usunięciu jego wskaźnika.
źródło