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.