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.