Sobes.tech
Junior — Middle

Ma'lumot tuzilmalarida meros olishni ishlatmasdan shunga o'xshash funksionallikni qanday amalga oshirish mumkin?

sobes.tech AI

AIdan javob

Dasturlashda merosxo'rlik o'rniga kompozitsiya va protokollar (interfeyslar) ishlatilishi mumkin. Masalan, Swiftda odatda protokollar yordamida xulq-atvor tavsiflanadi va aniq tuzilmalar bu protokollarni amalga oshiradi, bu esa qattiq merosxo'rlik hierarhiyasidan qochishga imkon beradi.

Shuningdek, delegatsiya naqshini ham qo'llash mumkin, bunda bir tuzilma boshqa tuzilmaning referensiyasini o'z ichiga oladi va kerakli funksionallikni amalga oshiradi.

Swiftda protokol va kompozitsiya bilan misol:

protocol Drawable {
    func draw()
}

struct Circle: Drawable {
    func draw() {
        print("Doira chizish")
    }
}

struct Square: Drawable {
    func draw() {
        print("Kvadrat chizish")
    }
}

struct Canvas {
    var shape: Drawable
    func render() {
        shape.draw()
    }
}

let circle = Circle()
let canvas = Canvas(shape: circle)
canvas.render()  // Chiqishi: Doira chizish

Shu tarzda, funksionallik kompozitsiya va protokollar orqali amalga oshiriladi, merosxo'rlik orqali emas.