Junior
Mi a különbség az összetétel és az aggregáció között?
sobes.tech MI
Válasz az MI-től
Összetétel és aggregáció objektumok közötti "rész-egész" kapcsolatokat jelentenek.
-
Összetétel: Szigorú kapcsolat, ahol a rész nem létezhet az egész nélkül. Az egész törlése egyben a részek törlését is eredményezi. A függő rész életciklusa teljes mértékben az egész által van meghatározva. Példa: Szobák (részek) egy Házban (egész). Ház nélkül a szobák nem léteznek.
// Összetétel példája: class Room { private String name; public Room(String name) { this.name = name; } // ... Room metódusok } class House { private List<Room> rooms = new ArrayList<>(); // Részek, amelyeket az egész hoz létre és kezel public House() { rooms.add(new Room("Living Room")); // Rész létrehozása az egészben rooms.add(new Room("Bedroom")); } // ... House metódusok } -
Aggregáció: Gyengébb kapcsolat, ahol a rész függetlenül is létezhet. Az egész törlése nem feltétlenül eredményezi a részek törlését. A részek több különböző objektumhoz is kapcsolódhatnak. Példa: Autó (egész) és Kerekek (részek). A kerekek függetlenül létezhetnek az autótól, és más autóban is használhatók.
// Aggregáció példája: class Wheel { private int size; public Wheel(int size) { this.size = size; } // ... Wheel metódusok } class Car { private List<Wheel> wheels = new ArrayList<>(); // Az egész tartalmaz hivatkozásokat a részekre public Car(List<Wheel> wheels) { this.wheels = wheels; // Külső részek fogadása } // ... Car metódusok } // Példa létrehozásra és használatra: List<Wheel> myWheels = new ArrayList<>(); myWheels.add(new Wheel(16)); myWheels.add(new Wheel(16)); // ... Car myCar = new Car(myWheels); // Aggregáció: a kerekek létezhetnek az autó előtt és után is
A fő különbségek táblázatban:
| Kritérium | Összetétel | Aggregáció |
|---|---|---|
| Függőség | Szigorú: a rész függ az egésztől | Gyenge: a rész függetlenül létezhet |
| Életciklus | A rész az egész által van kezelve | A rész nem feltétlenül az egész által van kezelve |
| Az egész törlése | A részek törléséhez vezet | Nem feltétlenül vezet a részek törléséhez |
| Többszörös kapcsolatok | A rész csak egy egészhez tartozik | A rész több egészhez is kapcsolódhat |
| UML diagram | Töltött romb az egész oldalán | Üres romb az egész oldalán |