Sobes.tech
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