Sobes.tech
Junior — Middle

SOLIDтин L принциби иштеп чыгуу практикасына кандайча колдонулат деп көрсөтө аласызбы?

sobes.tech AI

AIден жооп

SOLID-in L ilkesi Liskov-ın yerinə qoyma prinsipidir. Bu prinsip deyir ki, alt sinif obyektləri, əsas sinif obyektləri ilə əvəz oluna bilməli və proqramın düzgünlüyünü pozmamalıdır.

Kotlin-də nümunə:

open class Bird {
    open fun fly() {
        println("Quş uçur")
    }
}

class Sparrow : Bird() {
    override fun fly() {
        println("Qarğa uçur")
    }
}

class Ostrich : Bird() {
    override fun fly() {
        throw UnsupportedOperationException("Ostrich uça bilməz")
    }
}

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

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

    makeBirdFly(sparrow)  // Düzgün işləyir
    makeBirdFly(ostrich)  // L prinsipinin pozulması, çünki ostrich uça bilməz
}

Bu nümunədə, Ostrich sinfi, Bird əsas sinfinin davranışını dəstəkləmir və L prinsipini pozur. Prinsipi qorumaq üçün, irsi quruluş belə dizayn edilməlidir ki, alt siniflər, əsas sinfin müqaviləsini tam şəkildə dəstəkləsin, məsələn, uçan və uçmayan quşları müxtəlif hierarxiyalarda ayırmaq.