him Okej, objasniti ću na primjeru iz MI-2019, 3. zadatak.
Vidimo da nam npr. klasa Svemirski brod ima agregaciju prema klasi Potisnik. To je zato što u zadatku kaže da svaki svemirski brod ima najmanje jedan potisnik.
S druge strane, klasa Teretni (brod) referencira klasu Vozilo, jer u zadatku kaže da svaki teretni brod može prevoziti više vozila.
Okej, zašto je jedno onda referenca, a drugo agregacija? Zato što agregaciju koristimo kad želimo naznačiti da je objekt koji se agregira - u ovom primjeru potisnik, dio agregatora (svemirskog broda). S druge strane, kad teretni brod prevozi druga vozila, ona nisu njegov ključni dio, nego ih on samo prevozi, pa eto mora imati referencu na njih da zna koja točno vozila prevozi.
Slično i u ovom primjeru s prezentacije:
znamo da su gume jedna od komponenata od kojih se kamion sastoji, pa to označavamo agregacijom.
Šegvić je još na konzultacijama dodao da je razlika i u tome što kod agregacije, objekt koji se agregira (potisnik) ne može postojati bez roditeljskog objekta (svemirskog broda), odnosno da to ne bi imalo smisla. Ja se baš ne slažem s tim, jer iako u ovom primjeru to ima smisla, ako pogledamo prezentaciju o OO Dekorator:
vidimo da je označeno da dekorator agregira component. Istina je da je component ključni dio dekoratora, no meni nema niakakvog smisla da component ne može postojati bez dekoratora. Rekao bi da je ovo na što je Šegvić mislio kompozicija, a ne agregacija. Možda sam u krivu, no u svakom slučaju ja bi se samo držao definicije da agregaciju koristimo kad želimo naznačiti da se klasa A (agregat) sastoji od nekih instanci klase B, i to bi trebalo biti točno.