Sobes.tech
Junior — Middle

Môžeš ukázať, ako sa v praxi vývoja uplatňuje princíp L zo SOLID?

sobes.tech AI

Odpoveď od AI

Princíp L zo SOLID je princíp náhrady Liskov. Hovorí, že objekty odvodzovacích tried by mali byť zameniteľné s objektmi základnej triedy bez narušenia správnosti programu.

Príklad v Kotlin:

open class Bird {
    open fun fly() {
        println("Vták lieta")
    }
}

class Sparrow : Bird() {
    override fun fly() {
        println("Vrabc lieta")
    }
}

class Ostrich : Bird() {
    override fun fly() {
        throw UnsupportedOperationException("Pštros nemôže lietať")
    }
}

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

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

    makeBirdFly(sparrow)  // Funguje správne
    makeBirdFly(ostrich)  // Porušenie princípu L, pretože pštros nemôže lietať
}

V tomto príklade porušuje trieda Ostrich princíp L, pretože nepodporuje správanie základnej triedy Bird. Aby sme princíp dodržali, je potrebné navrhnúť hierarchiu tak, aby podtriedy plne podporovali kontrakt základnej triedy, napríklad rozdelením lietajúcich a nelietajúcich vtákov do rôznych hierarchií.