Sobes.tech
Junior — Middle

Meg tudod magyarázni a SOLID L elvét és annak jelentőségét a kód tervezésében?

sobes.tech MI

Válasz az MI-től

A SOLID L elve a Liskov-helyettesítési elv (Liskov Substitution Principle, LSP). Ez kimondja, hogy az alosztály objektumai helyettesíthetik a bázisosztály objektumait anélkül, hogy a program helyességét megsértenék.

Egyszerűbben fogalmazva, ha az B osztály öröklődik az A osztályból, akkor bárhol, ahol A objektumot használnak, helyettesíthető B objektummal, és a programnak helyesen kell működnie, anélkül, hogy viselkedését megváltoztatná.

Tervezésnél érték:

  • Biztosítja a helyes öröklődést és polimorfizmust.
  • Segít elkerülni a váratlan hibákat a funkcionalitás bővítésekor.
  • Elősegíti rugalmas és bővíthető architektúrák kialakítását.

C++ példával:

class Bird {
public:
    virtual void fly() {
        // repülés implementáció
    }
};

class Sparrow : public Bird {
    // veréb tud repülni, minden rendben
};

class Ostrich : public Bird {
public:
    void fly() override {
        throw std::logic_error("Strucc nem tud repülni");
    }
};

Itt az Ostrich megsérti az LSP-t, mivel az alosztály nem támogatja a bázisosztály viselkedését. Jobb másképp tervezni a hierarchiát, például egy repülő madarakra vonatkozó interfészt definiálva.