L jak Liskov Substitution Principle, czyli zasada podstawień Barbary Liskov

przez Karol Bocian | 19 stycznia, 2021

Liskov Substitution Principle — zasada podstawień Barbary Liskov

Oprogramowanie powinno dobrze działać, gdy w miejsce klasy bazowej podstawimy jej którąkolwiek klasę potomną. Wymagana jest pełna zgodność interfejsu oraz metod. Projektując hierarchię klas, należy zrobić to tak, aby każda klasa pochodna mogła wykorzystywać wszystkie metody klasy bazowej bez konieczności ich przesłaniania. Metody klas pochodnych powinny najwyżej rozszerzać działanie metod z klasy bazowej (wywołując je w swojej implementacji). Dziedziczenie należy wykonać tak, aby klasa pochodna wykorzystała wszystkie metody implementowanej klasy bazowej.

Regułę tę można stosować do metod, funkcji, klas, modułów oraz pakietów.

Zalety

  • Czytelniejszy i łatwiejszy w utrzymaniu kod.
  • Możliwość podstawienia dowolnej klasy pochodnej w miejsce klasy bazowej bez obaw, że program źle zadziała.
  • Mniej zależności w kodzie — obsługiwanie kolekcji obiektów danego typu bazowego nie wymaga sprawdzania, czy dany typ jest specjalnym typem i należy potraktować go inaczej.

Wady

  • Konieczność lepszego przemyślenia struktury klas i ich dziedziczenia.

Przykład

  • Kwadrat dziedziczący z klasy Prostokąt — metoda liczenia pola powierzchni jest nadpisana w kwadracie. Zasada Liskov jest złamana.
  • Ryba dziedzicząca po klasie Zwierzę, gdzie Klasa Zwierzę ma metodę Biegnij. Ryba oczywiście nie biega. Zasada Liskov jest złamana.
  • Klasa PlikTylkoDoOdczytu i PlikDoZapisuIOdczytu, dziedzicząca po klasie Plik. Klasa Plik ma metody Czytaj i Zapisuj. W klasie PlikTylkoDoOdczytu metoda Zapisuj nie będzie robiła tego, czego od niej oczekujemy, ponieważ nie można zapisać nic do pliku tylko do odczytu.

Wszystkie posty związane z mini projektem: Poznaj zasady SOLID i OOP:

Źródła

Obraz główny

Materiały

Kategoria: IT Projekt Poznaj zasady SOLID i OOP Tagi: it, OOP, programowanie, SOLID

O Karol Bocian

Programowanie i świat agentów programowalnych, który poznał na Wydziale Matematyki i Nauk Informacyjnych, wciągnął go w przemysł IT. W trakcie swojej praktyki zawodowej Karol zrozumiał, że nie ważne co się robi i kim się jest, ale wiedza z zarządzania przydaje się wszędzie. Rozpoczął studia na kierunku Zarządzanie i Inżyniera Produkcji. W przypadku Karola zarządzanie to nie tylko teoria czy praca, ale prawie każdy element jego życia, to jego pasja.