Sobes.tech
Junior

Kompozitsiya va agregatsiya o'rtasidagi farq nima?

sobes.tech AI

AIdan javob

Tarkib va agregatsiya - obyektlar o'rtasidagi "qism-butun" munosabatlari.

  • Tarkib: Qattiq munosabat bo'lib, qism butunsiz mavjud bo'la olmaydi. Butunlikni o'chirish qismni ham o'chiradi. Qaram qismning hayot aylanishi butunlik tomonidan to'liq belgilangan. Misol: Xonalar (qism) Uy (butun). Uy bo'lmasa, xonalar mavjud emas.

    // Tarkib misoli:
    class Room {
        private String name;
    
        public Room(String name) {
            this.name = name;
        }
    
        // ... Room metodlari
    }
    
    class House {
        private List<Room> rooms = new ArrayList<>(); // Qism butunlik tomonidan yaratiladi va boshqariladi
    
        public House() {
            rooms.add(new Room("Yashash xonasi")); // Qism butunlik ichida yaratiladi
            rooms.add(new Room("Yotoqxona"));
        }
    
        // ... House metodlari
    }
    
  • Agregatsiya: Kuchliroq munosabat bo'lib, qism mustaqil ravishda mavjud bo'lishi mumkin. Butunlikni o'chirish qismni ham o'chirishga majbur qilmaydi. Qism bir nechta obyekt bilan bog'liq bo'lishi mumkin. Misol: Avtomobil (butun) va Rul (qism). Rul avtomobildan mustaqil mavjud bo'lishi va boshqa avtomobilda ishlatilishi mumkin.

    // Agregatsiya misoli:
    class Wheel {
        private int size;
    
        public Wheel(int size) {
            this.size = size;
        }
    
        // ... Wheel metodlari
    }
    
    class Car {
        private List<Wheel> wheels = new ArrayList<>(); // Butunlik qismga havolalarni o'z ichiga oladi
    
        public Car(List<Wheel> wheels) {
            this.wheels = wheels; // Tashqaridan qism oladi
        }
    
        // ... Car metodlari
    }
    
    // Yaratish va foydalanish misoli:
    List<Wheel> myWheels = new ArrayList<>();
    myWheels.add(new Wheel(16));
    myWheels.add(new Wheel(16));
    // ...
    Car myCar = new Car(myWheels); // Agregatsiya: Rul avtomobildan oldin va keyin mavjud bo'lishi mumkin
    

Asosiy farqlar jadvalda:

Kriteriy Tarkib Agregatsiya
Bog'liqlik Qattiq: Qism butunga bog'liq Zaif: Qism mustaqil mavjud bo'lishi mumkin
Hayot aylanishi Qism butun tomonidan boshqariladi Qism butun tomonidan boshqarilmaydi
Butunni o'chirish Qismni ham o'chiradi Majburiy emas, qismni o'chirmaydi
Ko'p munosabatlar Qism faqat bitta butunga tegishli Qism bir nechta butun bilan bog'lanishi mumkin
UML diagrammasi To'ldirilgan romb butun tomonida Bo'sh romb butun tomonida