Liskov Substition

  • Rejestracja: dni
  • Ostatnio: dni
0

Mam pytanie odnosnie litery L w SOLID, tj liskov substition.

"W miejscu klasy bazowej mozna uzyc dowolnej klasy pochodnej, zgodnosc wszystkich metod"

Jak to można wytłumaczyć na szybko? Przeczytalem kilka artykulow i prawde mowiac duzo z nich pisze o zupelnie innych sprawach :( niektóre artykuly wykluczaja sie najwzajem.

Chodzi o to ze powinno sie uzywac polimorfizmu i robic override na metodach? Oraz robić dobre abstrakcje? Czyli np metodą bazową dla kwadratu powinna być figura, a nie prostokąt? Czy chodzi o coś zupelnie innego?

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
1

Chodzi o to, że w klasie dziedziczącej nie możesz zmieniać zachowania, którego spodziewają się wszyscy klienci klasy bazowej.

W praktyce i "na szybko": lepiej nie tworzyć skomplikowanych hierarchii dziedziczenia, bo kiedyś w końcu pojawi się jakiś specjalny przypadek, którym tę zasadę złamie, a co za tym idzie gdzieś trzeba będzie wprowadzić dodatkową ifologię, żeby obsługiwać specjalne przypadki w zależności od typu faktycznie przekazanej do klienta instancji i zrobi się syf w kodzie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.