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.