Junior — Middle
Pouvez-vous montrer comment le principe L de SOLID est appliqué en pratique dans le développement?
sobes.tech IA
Réponse de l'IA
Le principe L de SOLID est le principe de substitution de Liskov. Il stipule que les objets des sous-classes doivent pouvoir être utilisés à la place des objets de la classe de base sans violer la correction du programme.
Exemple en Kotlin :
open class Bird {
open fun fly() {
println("L'oiseau vole")
}
}
class Sparrow : Bird() {
override fun fly() {
println("Le moineau vole")
}
}
class Ostrich : Bird() {
override fun fly() {
throw UnsupportedOperationException("L'autruche ne peut pas voler")
}
}
fun makeBirdFly(bird: Bird) {
bird.fly()
}
fun main() {
val sparrow = Sparrow()
val ostrich = Ostrich()
makeBirdFly(sparrow) // Fonctionne correctement
makeBirdFly(ostrich) // Violation du principe L, car l'autruche ne peut pas voler
}
Dans cet exemple, la classe Ostrich viole le principe L car elle ne supporte pas le comportement de la classe de base Bird. Pour respecter le principe, il faut concevoir la hiérarchie de manière à ce que les sous-classes supportent entièrement le contrat de la classe de base, par exemple en séparant les oiseaux volants et non volants en différentes hiérarchies.