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 |