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