Sobes.tech
Junior — Middle

Czy możesz pokazać, jak zasada L z SOLID jest stosowana w praktyce programowania?

sobes.tech AI

Odpowiedź od AI

Zasada L w SOLID to zasada podstawiania Liskov. Mówi ona, że obiekty klas pochodnych powinny być wymienialne z obiektami klasy bazowej bez naruszania poprawności działania programu.

Przykład w Kotlin:

open class Bird {
    open fun fly() {
        println("Ptak lata")
    }
}

class Sparrow : Bird() {
    override fun fly() {
        println("Wróbel lata")
    }
}

class Ostrich : Bird() {
    override fun fly() {
        throw UnsupportedOperationException("Struś nie potrafi latać")
    }
}

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

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

    makeBirdFly(sparrow)  // Działa poprawnie
    makeBirdFly(ostrich)  // Narusza zasadę L, ponieważ struś nie potrafi latać
}

W tym przykładzie klasa Ostrich narusza zasadę L, ponieważ nie obsługuje zachowania klasy bazowej Bird. Aby przestrzegać zasady, należy projektować hierarchię tak, aby klasy pochodne w pełni obsługiwały kontrakt klasy bazowej, na przykład rozdzielając ptaki latające i nielatające w różne hierarchie.