Spis treści
Liskov Substitution Principle
The application should work correctly when we put in the base class place every derived class. There is required full interface and method compatibility. You should remember, during designing class hierarchy, that every class can use their method from base class without overriding them. Methods of derivative classes should at most extend base method (can call them in their implementation).
This rule can be applied to methods, functions, classes, modules and packages.
Advantages
- More readable code.
- More understandable code.
- Fewer surprises in code.
- Easier maintenance.
- Possibility to substitute base class by any derivative class with sure, that the program works fine.
- Fewer dependencies in code — handling list of objects do not require checking of this object type and handling in a specific way.
Disadvantages
- The need to think better about class structure and inheritance.
Examples
- Square inherits from Rectangle — AreaCount needs to be overridden in Square class.
- Fish inherits from Animal, where Animal has method Run. Fish do not run of course!
- Classes FileReadonly and FileWriteAndRead inherit from File. Class File has method Read and Write. In FileReadonly method Read is… confusing.
All posts from mini project: Learn SOLID and OOP principles:
- SOLID
- SOLID exercises
- S like Single responsibility principle
- SOLID exercises — Kata
- O as Open-closed principle
- L jak Liskov Substitution Principle
- Interface segregation principle
- KISS — Keep it simple, stupid
- DRY — Don’t repeat yourself
- Dependency inversion principle
- SLAP — Single Level of Abstraction Principle
- Composition Over Inheritance
- Encapsulate what changes
- Lod — Law of Demeter
- ES as Exercises of Single responsibility principle
- EO as Exercises of Open/closed principle
- EL as Exercises of Liskov Substitution Principle
- EI as Eexrcises of Interface segregation principle
- ES as Exercises of Dependency Inversion Principle
- Object-oriented programming
- OOP — Object-Oriented Programming — Advice
- OOP — Object Oriented Programming
Sources
Main image
Materials
- Clean architecture — Robert C. Martin
- https://sii.pl/blog/solid-dobre-praktyki-programowania/
- https://javadeveloper.pl/solid/
- https://www.p-programowanie.pl/paradygmaty-programowania/zasady-solid/
- https://www.samouczekprogramisty.pl/solid-czyli-dobre-praktyki-w-programowaniu-obiektowym/
- https://pl.wikipedia.org/wiki/Zasada_podstawienia_Liskov
- https://en.wikipedia.org/wiki/Liskov_substitution_principle
- http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod
- The Liskov Substitution Principle – Robert C. Martin – https://drive.google.com/file/d/0BwhCYaYDn8EgNzAzZjA5ZmItNjU3NS00MzQ5LTkwYjMtMDJhNDU5ZTM0MTlh/view
1
/
53
020/100| Przetłumacz Na Angielski - Translate to English| Bubble.io TUTORIAL
019/100| Wykryj Sentyment Zmień Głos na Tekst- Voice-to-Text Sentiment Analyzer| Bubble.io TUTORIAL
018/100| Rozpoznawanie Logo - Logo Recognizer| Bubble.io TUTORIAL
2025_01_17 Jak Ugotować Jajka? | Walka I Postępy
017/100| AI Generowanie Obrazów - AI Image Generation| Bubble.io TUTORIAL
2025_01_16 Rozmawiaj!!! Walka I Postępy
016/100| AI Chat Produktywności - Productivity Chatbot AI| Bubble.io TUTORIAL
2025_01_15 Świąteczne Prezenty Walka I Postępy
015/100| AI Trener Personalny - Motivational Coach AI| Bubble.io TUTORIAL
2025_01_14 Metoda Na Cele | Walka I Postępy
014/100| Połączenie przez API - API Connector| Bubble.io TUTORIAL
2025_01_13 Przerwa Świąteczna | Walka I Postępy
013/100| Rejestracja i Logowanie - Sign-Up & Login Page| Bubble.io TUTORIAL
012/100| Proces Tworzenia Oprogramowania - Transforming App Development|Bubble.io TUTORIAL
011/100| Debugowanie - Debugging| Bubble.io TUTORIAL
010/100| Reużywalny Element - Reusable Elements| Bubble.io TUTORIAL
009/100| Listy Tekstów - Lists of Text| Bubble.io TUTORIAL
008/100| Logika: Warunki - Conditional Basics| Bubble.io TUTORIAL
007/100| Edycja w Bazie Danych - Edit Database| Bubble.io TUTORIAL
006/100| Baza Danych - Database| Bubble.io TUTORIAL
Powiadom Osobę w Komentarzu - Notify Person via Comments| Bubble.io TUTORIAL
005/100| Działanie: Akcje i Wydarzenia - Workflows: Events and Actions| Bubble.io TUTORIAL
004/100| Animowany Przycisk - Custom Animated Buttons| Bubble.io TUTORIAL
003/100| Grupy - Group Elements| Bubble.io TUTORIAL
002/100| Teksty - Text Elements| Bubble.io TUTORIAL
001/100| Edytor Aplikacji i Układ Strony - Editor & Layouts| Bubble.io TUTORIAL
Zbuduj TODO Aplikację - To-Do App in 10 Minutes | Bubble.io Budowa Aplikacji
Wysuwający się Panel - Slide-in Panel| Quick Tip
Wykresy Wykorzystania Bubble.io - App Usage Charts | Bubble.io TUTORIAL
Własny Tymczasowy Stan - Learn Custom States in 5 min| Bubble.io Quick Tip
1
/
53