Sobes.tech
Junior — Middle

Czy możesz wyjaśnić zasadę L z SOLID i jej znaczenie w projektowaniu kodu?

sobes.tech AI

Odpowiedź od AI

Zasada L z SOLID to Zasada Podstawiania Liskov (Liskov Substitution Principle, LSP). Mówi ona, że obiekty podklasy powinny być wymienialne z obiektami klasy bazowej bez naruszania poprawności programu.

Mówiąc prościej, jeśli klasa B dziedziczy po klasie A, to wszędzie, gdzie używany jest obiekt A, można go zastąpić obiektem B, a program powinien działać poprawnie, nie zmieniając swojego zachowania.

Wartość przy projektowaniu:

  • Zapewnia poprawne dziedziczenie i polimorfizm.
  • Pomaga unikać nieoczekiwanych błędów podczas rozszerzania funkcjonalności.
  • Sprzyja tworzeniu elastycznych i rozszerzalnych architektur.

Przykład w C++:

class Bird {
public:
    virtual void fly() {
        // implementacja lotu
    }
};

class Sparrow : public Bird {
    // wróbel potrafi latać, wszystko w porządku
};

class Ostrich : public Bird {
public:
    void fly() override {
        throw std::logic_error("Struś nie potrafi latać");
    }
};

Tutaj Ostrich narusza zasadę LSP, ponieważ podklasa nie obsługuje zachowania klasy bazowej. Lepiej zaprojektować hierarchię inaczej, na przykład wyodrębniając interfejs dla ptaków latających.