Explique o que significa o princípio de substituição de Liskov e como ele é aplicado na programação orientada a objetos.
sobes.tech IA
Resposta da IA
O Princípio da Substituição de Liskov (Liskov Substitution Principle, LSP) é um dos cinco princípios SOLID na programação orientada a objetos. Ele afirma que objetos de uma subclasse devem poder ser usados no lugar de objetos da classe base sem alterar a correção do programa.
Simplificando, se a classe B herda de A, então objetos de B devem comportar-se de modo que possam ser usados no lugar de objetos de A sem erros inesperados ou mudanças na lógica.
Isso é alcançado garantindo que a subclasse não viole:
- Os invariantes da classe base.
- As pré-condições dos métodos (exigindo dados de entrada mais rigorosos).
- As pós-condições (fornecendo resultados menos garantidos).
Exemplo:
class Bird {
func fly() {
print("O pássaro voa")
}
}
class Sparrow: Bird {
override func fly() {
print("O pardal voa")
}
}
// Violação do LSP ao adicionar uma classe Penguin que não consegue voar
class Penguin: Bird {
override func fly() {
fatalError("O pinguim não consegue voar")
}
}
Neste exemplo, Penguin viola o LSP, pois não pode ser usado no lugar de Bird sem erros. Seria mais adequado definir uma interface separada para pássaros que voam.
Assim, o LSP ajuda a criar hierarquias de classes que são fáceis de expandir e manter, evitando erros inesperados ao substituir objetos.