Liskov Substition

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?

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1