Sobes.tech
Junior — Middle

Kunt u een voorbeeld geven van het Liskov-substitutieprincipe in objectgeoriënteerd programmeren?

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 C#:

class Bird {
    public virtual void Fly() {
        Console.WriteLine("Vogel vliegt");
    }
}

class Sparrow : Bird {
    public override void Fly() {
        Console.WriteLine("Spreeuw vliegt");
    }
}

class Ostrich : Bird {
    public override void Fly() {
        throw new NotSupportedException("Struisvogel kan niet vliegen");
    }
}

void MakeBirdFly(Bird bird) {
    bird.Fly();
}

// Gebruik:
MakeBirdFly(new Sparrow()); // correct
MakeBirdFly(new Ostrich()); // schendt de LSP, omdat het een uitzondering veroorzaakt

In dit voorbeeld schendt de klasse Ostrich het Liskov Substitutieprincipe omdat het het gedrag van de basisklasse Bird (de methode Fly) niet ondersteunt en een uitzondering gooit. Om de LSP te respecteren, moet de klassehiërarchie worden aangepast of de interfaces worden opgesplitst zodat subklassen niet gedwongen worden om niet-ondersteund gedrag te implementeren.