Sobes.tech
Junior — Middle

Siz dasturlash amaliyotida SOLID ning L prinsipini qanday qo'llash mumkinligini ko'rsata olasizmi?

sobes.tech AI

AIdan javob

SOLID ning L prinsipi Liskov almashtirish prinsipi hisoblanadi. U shuni aytadiki, voris sinflar ob'ektlari asosiy sinf ob'ektlari bilan almashtirilishi mumkin bo'lishi kerak, bu dastur to'g'riligini buzmasdan.

Kotlin misoli:

open class Bird {
    open fun fly() {
        println("Qush uchadi")
    }
}

class Sparrow : Bird() {
    override fun fly() {
        println("Qushqush uchadi")
    }
}

class Ostrich : Bird() {
    override fun fly() {
        throw UnsupportedOperationException("Ostrich uchmaydi")
    }
}

fun makeBirdFly(bird: Bird) {
    bird.fly()
}

fun main() {
    val sparrow = Sparrow()
    val ostrich = Ostrich()

    makeBirdFly(sparrow)  // To'g'ri ishlaydi
    makeBirdFly(ostrich)  // L prinsipining buzilishi, chunki ostrich uchmaydi
}

Ushbu misolda, Ostrich sinfi, Bird asosiy sinfining xulq-atvorini qo'llab-quvvatlamaydi, shuning uchun L prinsipini buzadi. Prinsipga rioya qilish uchun, voris sinflar asosiy sinf shartnomasini to'liq qo'llab-quvvatlashi uchun, masalan, uchadigan va uchmaydigan qushlarni turli hierarxiyalarda ajratish kerak.