Junior — Middle
Podes dar um exemplo de como o princípio de substituição de Liskov é aplicado na prática da programação?
sobes.tech IA
Resposta da IA
O Princípio da Substituição de Liskov (Liskov Substitution Principle, LSP) afirma que objetos de uma subclasse devem poder ser usados no lugar de objetos da classe base sem alterar a correção do programa.
Exemplo em JavaScript (Node.js):
class Bird {
fly() {
console.log('O pássaro voa');
}
}
class Sparrow extends Bird {
fly() {
console.log('O pardal voa');
}
}
class Ostrich extends Bird {
fly() {
throw new Error('A avestruz não consegue voar');
}
}
function makeBirdFly(bird) {
bird.fly();
}
const sparrow = new Sparrow();
makeBirdFly(sparrow); // O pardal voa
const ostrich = new Ostrich();
makeBirdFly(ostrich); // Erro — viola o LSP
Aqui, a classe Ostrich viola o princípio de substituição de Liskov, pois a subclasse não suporta o comportamento da classe base (o método fly). Para cumprir o LSP, é melhor dividir as classes em aves que voam e aves que não voam, por exemplo, através de interfaces ou classes base separadas.