Explique ce que signifie le principe de substitution de Liskov et comment il est appliqué en programmation orientée objet.
sobes.tech IA
Réponse de l'IA
Le principe de substitution de Liskov (Liskov Substitution Principle, LSP) est l’un des cinq principes SOLID en programmation orientée objet. Il stipule que les objets d’une sous-classe doivent pouvoir être utilisés à la place des objets de la classe de base sans modifier la correction du programme.
En termes simples, si la classe B hérite de la classe A, alors les objets de la classe B doivent se comporter de manière à pouvoir être utilisés à la place des objets de la classe A sans erreurs inattendues ou changements dans la logique.
Cela est réalisé en veillant à ce que la sous-classe ne doit pas :
- Violent les invariants de la classe de base.
- Restreignent les préconditions des méthodes (exigent des données d’entrée plus strictes).
- Étendent les postconditions (fournissent un résultat moins garanti).
Exemple :
class Bird {
func fly() {
print("L’oiseau vole")
}
}
class Sparrow: Bird {
override func fly() {
print("Le moineau vole")
}
}
// Violation du LSP si l’on ajoute une classe Penguin qui ne peut pas voler
class Penguin: Bird {
override func fly() {
fatalError("Le pingouin ne peut pas voler")
}
}
Dans cet exemple, Penguin viole le LSP, car il ne peut pas être utilisé à la place de Bird sans erreurs. Il serait plus approprié de définir une interface séparée pour les oiseaux qui volent.
Ainsi, le LSP aide à créer des hiérarchies de classes qui sont faciles à étendre et à maintenir, en évitant des erreurs inattendues lors du remplacement d’objets.