Sobes.tech
Junior — Middle

Pouvez-vous donner un exemple de la façon dont le principe de substitution de Liskov est appliqué en pratique de la programmation?

sobes.tech IA

Réponse de l'IA

Le principe de substitution de Liskov (Liskov Substitution Principle, LSP) stipule que les objets d’une sous-classe doivent pouvoir être utilisés à la place des objets de la classe de base sans compromettre la correction du programme.

Exemple en JavaScript (Node.js):

class Bird {
  fly() {
    console.log('L'oiseau vole');
  }
}

class Sparrow extends Bird {
  fly() {
    console.log('L'étourneau vole');
  }
}

class Ostrich extends Bird {
  fly() {
    throw new Error('L'autruche ne peut pas voler');
  }
}

function makeBirdFly(bird) {
  bird.fly();
}

const sparrow = new Sparrow();
makeBirdFly(sparrow); // L'étourneau vole

const ostrich = new Ostrich();
makeBirdFly(ostrich); // Erreur — violation du LSP

Ici, la classe Ostrich viole le principe de substitution de Liskov, car la sous-classe ne supporte pas le comportement de la classe de base (la méthode fly). Pour respecter le LSP, il est préférable de diviser les classes en oiseaux volants et non volants, par exemple, via des interfaces ou des classes de base séparées.