Junior — Middle
Оё метавонед нишон диҳед, ки принсипи L-и SOLID дар амал чӣ гуна истифода мешавад?
sobes.tech AI
Ҷавоб аз AI
Принципи L аз SOLID — принсипи ивазкунӣ Лисков аст. Он мегӯяд, ки объектҳои зери синф бояд бо объектҳои синфи асосӣ ивазшаванда бошанд, бе вайрон кардани дурустии барнома.
Масалан дар Kotlin:
open class Bird {
open fun fly() {
println("Ҳамвор парвоз мекунад")
}
}
class Sparrow : Bird() {
override fun fly() {
println("Қаҳт парвоз мекунад")
}
}
class Ostrich : Bird() {
override fun fly() {
throw UnsupportedOperationException("Қаҳт наметавонад парвоз кунад")
}
}
fun makeBirdFly(bird: Bird) {
bird.fly()
}
fun main() {
val sparrow = Sparrow()
val ostrich = Ostrich()
makeBirdFly(sparrow) // Ба таври дуруст кор мекунад
makeBirdFly(ostrich) // Қайзии принсипи L, зеро қаҳт наметавонад парвоз кунад
}
Дар ин мисол, синфи Ostrich принсипи L-ро вайрон мекунад, зеро он рафтори синфи асосии Bird-ро дастгирӣ намекунад. Барои риояи принсип, бояд иерархияро тавре тарҳрезӣ кард, ки зери синфҳо пурра шартномаи синфи асосиро дастгирӣ кунанд, масалан, парвозкунанда ва парвознашудаи паррандаҳоро дар иерархияҳои мухталиф ҷудо кардан.