Sobes.tech
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.