Sobes.tech
Junior — Middle

Consegues mostrar como o princípio L do SOLID é aplicado na prática de desenvolvimento?

sobes.tech IA

Resposta da IA

O princípio L do SOLID é o princípio de substituição de Liskov. Ele afirma que objetos de subclasses devem ser intercambiáveis com objetos da classe base sem violar a correção do programa.

Exemplo em Kotlin:

open class Bird {
    open fun fly() {
        println("O pássaro voa")
    }
}

class Sparrow : Bird() {
    override fun fly() {
        println("O pardal voa")
    }
}

class Ostrich : Bird() {
    override fun fly() {
        throw UnsupportedOperationException("A avestruz não consegue voar")
    }
}

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

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

    makeBirdFly(sparrow)  // Funciona corretamente
    makeBirdFly(ostrich)  // Violação do princípio L, pois a avestruz não consegue voar
}

Neste exemplo, a classe Ostrich viola o princípio L, pois não suporta o comportamento da classe base Bird. Para cumprir o princípio, deve-se projetar a hierarquia de modo que as subclasses suportem completamente o contrato da classe base, por exemplo, separando aves que voam e que não voam em hierarquias diferentes.