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.