Sobes.tech
Junior — Middle

Kun je het L-principe uit SOLID en de betekenis ervan bij het ontwerpen van code uitleggen?

sobes.tech AI

Antwoord van AI

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

Kort gezegd, als klasse B erft van klasse A, dan kan overal waar een A-object wordt gebruikt, dit worden vervangen door een B-object, en het programma moet correct blijven werken zonder gedrag te veranderen.

Waarde bij ontwerp:

  • Zorgt voor correcte overerving en polymorfisme.
  • Helpt onverwachte fouten te voorkomen bij het uitbreiden van functionaliteit.
  • Bevordert het creëren van flexibele en uitbreidbare architecturen.

Voorbeeld in C++:

class Bird {
public:
    virtual void fly() {
        // implementatie van vliegen
    }
};

class Sparrow : public Bird {
    // mus kan vliegen, alles in orde
};

class Ostrich : public Bird {
public:
    void fly() override {
        throw std::logic_error("Struisvogel kan niet vliegen");
    }
};

Hier overtreedt Ostrich het LSP omdat de subklasse het gedrag van de basisklasse niet ondersteunt. Het is beter om de hiërarchie anders te ontwerpen, bijvoorbeeld door een interface voor vliegende vogels te definiëren.