Sobes.tech
Junior — Middle

Ar galite parodyti, kaip taikomas SOLID L principas programavimo praktikoje?

sobes.tech AI

Atsakymas iš AI

SOLID L principas yra Liskovo pakaitos principas. Jis sako, kad paveldimų klasių objektai turi būti keičiami su pagrindinės klasės objektais be programos teisingumo pažeidimo.

Pavyzdys Kotlin:

open class Bird {
    open fun fly() {
        println("Paukštis skraido")
    }
}

class Sparrow : Bird() {
    override fun fly() {
        println("Gervė skraido")
    }
}

class Ostrich : Bird() {
    override fun fly() {
        throw UnsupportedOperationException("Strutis negali skraidyti")
    }
}

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

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

    makeBirdFly(sparrow)  // Veikia teisingai
    makeBirdFly(ostrich)  // L principo pažeidimas, nes strutis negali skraidyti
}

Šiame pavyzdyje, Ostrich klasė pažeidžia L principą, nes nepalaiko pagrindinės klasės Bird elgesio. Norint laikytis principo, reikia suprojektuoti hierarchiją taip, kad pogrupiai visiškai palaikytų pagrindinės klasės sutartį, pavyzdžiui, atskiriant skraidančius ir neskraidančius paukščius į skirtingas hierarchijas.