Sobes.tech
Junior — Middle

Kun je een voorbeeld geven van hoe het Liskov-substitutieprincipe in de praktijk van het programmeren wordt toegepast?

sobes.tech AI

Antwoord van AI

Het Liskov-Substitutieprincipe (Liskov Substitution Principle, LSP) stelt dat objecten van een subklasse verwisselbaar moeten zijn met objecten van de basisklasse zonder de correctheid van het programma te schaden.

Voorbeeld in JavaScript (Node.js):

class Bird {
  fly() {
    console.log('Vogel vliegt');
  }
}

class Sparrow extends Bird {
  fly() {
    console.log('Spreeuw vliegt');
  }
}

class Ostrich extends Bird {
  fly() {
    throw new Error('Struisvogel kan niet vliegen');
  }
}

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

const sparrow = new Sparrow();
makeBirdFly(sparrow); // Spreeuw vliegt

const ostrich = new Ostrich();
makeBirdFly(ostrich); // Fout — overtreding van LSP

Hier overtreedt de Ostrich-klasse het Liskov-Substitutieprincipe omdat de subklasse het gedrag van de basisklasse (de fly-methode) niet ondersteunt. Om LSP na te leven, is het beter om de klassen te splitsen in vliegende en niet-vliegende vogels, bijvoorbeeld via interfaces of aparte basisklassen.