Junior — Middle
Obyektga yo'naltirilgan dasturlashda agregatsiya va kompozitsiya o'rtasidagi farqlar nima?
sobes.tech AI
AIdan javob
Ob'ektlar o'rtasidagi bog'lanish turlari bo'lib, ular ob'ektlar qanday bog'langanligini tasvirlaydi.
-
Agregatsiya: bu "bor" (has-a) bog'lanish bo'lib, unda bir ob'ekt boshqasini o'z ichiga oladi, ammo ichki ob'ektning hayot aylanishi konteynerga bog'liq emas. Ichki ob'ekt mustaqil ravishda mavjud bo'lishi mumkin.
-
Kompozitsiya: agregatsiyaning kuchliroq shakli bo'lib, ichki ob'ekt to'liq konteynerga tegishli va alohida mavjud bo'lmaydi. Agar konteyner yo'q qilinsa, ichki ob'ekt ham yo'q bo'ladi.
Misol:
class Engine {}
// Agregatsiya: Car Engine'ga ega, lekin Engine alohida mavjud bo'lishi mumkin
class Car {
var engine: Engine?
}
// Kompozitsiya: House Rooms'lardan iborat, xonalar uy bo'lmasdan mavjud bo'lmaydi
class Room {}
class House {
var rooms: [Room] = []
init() {
rooms = [Room(), Room()]
}
}
Kompozitsiyada, ob'ektlar yaqin bog'langan va birga boshqariladi, agregatsiyada esa bog'lanish zaifroq.