Archiwa tagu: OOP
Podsumowanie zasad SOLID i OOP
Podsumowanie projektu: Poznaj zasady SOLID i OOP
Encapsulate what changes, czyli Ukrywaj zmieniające się rzeczy
Composition Over Inheritance, czyli Kompozycja ponad dziedziczeniem
Composition Over Inheritance, czyli Kompozycja ponad dziedziczeniem Zasada mówi, że lepiej korzystać jest z kompozycji (klasa A używa klasy B) zamiast dziedziczenia po klasie. Stosując dziedziczenie, należy pamiętać, aby nie złamać Zasady podstawienia Liskov. Zasada nie mówi, że mamy całkowicie zrezygnować z dziedziczenia. Przykład: Mamy Pracownika i Kierownika. Dziedziczenie: Obaj mają imię i nazwisko. Mogą oni dziedziczyć po klasie Pracownik. Kompozycja: Obaj mają wyliczaną pensję. Tutaj lepiej jest… Dowiedz się więcej »
SLAP — Single Level of Abstraction Principle, czyli Pojedynczy poziom abstrakcji
DRY — Don’t repeat yourself, czyli Nie powtarzaj się
Lod — Law of Demeter, czyli Prawo Demeter
Prawo Demeter (Zasada minimalnej wiedzy / Reguła ograniczenia interakcji) Rozmawiaj tylko z bliskimi przyjaciółmi. Należy unikać wywołań typu: Name = School.GetWorkers().GetPersonData().GetName(). Metoda jakiegokolwiek obiektu może wywoływać metody: Swojego obiektu. Argumentów swoich metod. Obiektów, które sam tworzy. Pól swojego obiektu. Zalety Mniejsza zależność między klasami i modułami. Łatwiejsze utrzymanie kodu. Brak konieczności znania szczegółów wywoływanych obiektów. Wady Klasy muszą… Dowiedz się więcej »
KISS — Keep it simple, stupid, czyli Bez udziwnień zapisu, idioto (BUZI)
OOP — Object Oriented Programming, czyli programowanie obiektowe — Modelowanie dziedziny
Programowanie obiektowe warto jest rozpocząć od przeanalizowania problemu i zaprojektowania rozwiązania. Bardzo pomocnym krokiem (szczególnie w utrzymaniu wysokiej jakości oprogramowania) jest modelowanie dziedziny. Pojęcia: Programowanie obiektowe — technika tworzenia programów komputerowych wykorzystująca klasy i obiekty, które komunikują się ze sobą i nawzajem wywołują swoje metody. Obiekty — elementy oprogramowania łączące stan (dane) i zachowania (metody). Analiza — badanie problemu. Analiza obiektowa — badanie i klasyfikacja obiektów pojęciowych… Dowiedz się więcej »
OOP — Myślenie obiektowe
Porady: Poznaj zasady SOLID i staraj się jak najbardziej przestrzegać. Myśl o klasie jak o fizycznym obiekcie: co on może zrobić, kto może coś robić z jego danymi, czego robić on nie powinien. Zastanawiaj się, jak obiekty mogą się ze sobą komunikować. Opieraj zależności między obiektami na abstrakcji. Pamiętaj, że klasy powinny być hermetyczne. Klasy i metody nie powinny robić zbyt wiele — duże klasy i metody trudno jest zrozumieć… Dowiedz się więcej »
OOP — Object Oriented Programming, czyli programowanie obiektowe
Programowanie obiektowe Sposób tworzenia oprogramowania wykorzystujący obiekty — elementy scalające dane i funkcje. Program składa się z obiektów komunikujących się ze sobą i realizujących różne zadania. Jest to naturalny dla człowieka sposób modelowania rzeczywistości. Zaletą programowania obiektowego jest łatwość pisania oprogramowania, modyfikowania, utrzymywania, rozwijania oraz ponownego używania już raz napisanego kodu. Cechy programowana obiektowego Klasy Klasy to szablony obiektów. Zawierają dane (charakterystyki) oraz procedury (metody… Dowiedz się więcej »
Ćwiczenia z SOLID — Kata
Dzisiaj będę ćwiczył zasady SOLID poprzez robienie Kata. Wybrałem bardzo popularną formę kata: Kalkulator napisów. Czym jest kata? Kata Kata to podstawowy ruch. Jest to japońskie słowo, które oznacza konkretne sekwencje ruchów (walki). Ich regularne powtarzanie pozwala ćwiczyć się do perfekcji w danej technice. W programowaniu pod hasłem Kata określa się zbiór konkretnych czynności stosowanych do ćwiczenia się w programowaniu. Jedno kata polega… Dowiedz się więcej »
Podsumowanie połowy projektu: Poznaj zasady SOLID i OOP
Za mną pierwsza połowa mojego 30-dniowego mini projektu: Poznaj Zasady SOLID i OOP. Idzie dobrze, wszystkie zadania, które miałem do dzisiaj zrobić, zostały wykonane. Jednego dnia nie udało mi się popracować nad tym projektem, ale na szczęście kolejnego dnia mogłem to nadrobić. W ramach tego projektu: Odświeżyłem sobie zasady SOLID. Przećwiczyłem zasady SOLID w praktyce (programując). Napisałem posty z zadami solid, moimi praktycznymi przykładami (kilka również przetłumaczyłem na angielski). Zrobiłem… Dowiedz się więcej »
Ćwiczenia z SOLID
SOLID Zasady SOLID są podstawowymi dobrymi praktykami w programowaniu obiektowym. Warto jest nie tylko znać zasady SOLID, ale również je ćwiczyć. Przypomnijmy sobie jeszcze raz wszystkie zasady SOLID. Następnie przedstawię Ci sposoby, jak ćwiczyć zasady SOLID. Single responsibility principle – Zasada jednej odpowiedzialności Każda klasa powinna mieć tylko jedną odpowiedzialność (czyli tylko jeden powód do modyfikacji klasy) – jeden cel istnienia. Open/closed principle – Zasada… Dowiedz się więcej »
CI jak Ćwiczenia Dependency Inversion Principle, czyli Zasada odwrócenia zależności
Dependency inversion principle — Zasada odwróconej zależności Wysokopoziomowe moduły nie powinny zależeć od modułów niskopoziomowych, lecz zależność powinna wynikać z abstrakcji. Jak wykorzystywać w praktyce DIP? Twórzmy dużo abstrakcyjnych bytów. Każda klasa niech implementuje interfejs lub dziedziczy po klasie abstrakcyjnej. Tworząc oprogramowanie, możemy najpierw stworzyć tylko interfejsy, a dopiero później je zaimplementować. Pomocne w spełnieniu tej zasady jest przestrzeganie tych reguł: Każda zmienna w klasie jest referencja do abstrakcji. Wszystkie klasy dziedziczą po abstrakcji.… Dowiedz się więcej »
CI jak Ćwiczenia Interface segregation principle, czyli Zasady segregacji interfejsów
Interface segregation principle – Zasada segregacji interfejsów Wiele dedykowanych i małych interfejsów jest lepsze niż jeden ogólny. Jak wykorzystywać w praktyce ISP? Należy rozdzielać interfejsy na mniejsze i przyłożyć się do projektowania abstrakcyjnych elementów w aplikacji. Za granicę podziału najlepiej wybierać jest miejsce, które pozwala wydzielić obszary zgodne z zasadą pojedynczej odpowiedzialności. Każdy obszar powinien mieć jeden powód do zmiany. Powinien zmniejszać zależności i zwiększać… Dowiedz się więcej »
CL jak Ćwiczenia Liskov Substitution Principle, czyli zasada podstawień Barbary Liskov
Liskov substitution principle – Zasada podstawienia Liskov Oprogramowanie powinno dobrze działać, gdy w miejsce klasy bazowej podstawimy jej którąkolwiek klasę potomną. Jak wykorzystywać w praktyce LSP? Należy dobrze zastanowić się przed skorzystaniem z dziedziczenia. Zazwyczaj lepszą opcją jest użycie kompozycji. Warto jest również zrobić proste eksperymenty: próbować podstawić w klasach korzystających z naszego drzewa klas, wszystkie klasy potomne oraz klasę bazową i zobaczyć, czy nadal… Dowiedz się więcej »
CO jak Ćwiczenia Open/closed principle, czyli Zasada otwarte-zamknięte
Open/closed principle – Zasada otwarte-zamknięte Wszystkie klasy powinny być otwarte na rozszerzenia, ale zamknięte na modyfikacje. Jak wykorzystywać w praktyce OCP? Warto jest stosować interfejsy oraz operować na abstrakcji, a nie uzależniać się od szczegółów implementacyjnych. Trudności związane z OCP Ciężko jest czasami zdecydować, co jest szczegółem implementacyjnym oraz w którą stronę będzie rozszerzała się nasza aplikacja. Przykład Ćwiczenia tej metody wykonałem na bardzo prostym przykładzie. Mamy kalkulator, który ma za zadanie obliczyć… Dowiedz się więcej »
CS jak Ćwiczenia Single responsibility principle, czyli zasada jednej odpowiedzialności
Single responsibility principle — Zasada jednej odpowiedzialności Każda klasa powinna mieć tylko jedną odpowiedzialność (czyli tylko jeden powód do modyfikacji klasy) – jeden cel istnienia. Jak wykorzystywać w praktyce SRP? Łącz w jedno kod, który ma ten sam jeden powód do zmiany. Rozdzielaj od siebie kod, który ma wiele powodów do zmiany. Trudności związane z SRP Z zasadą jednej odpowiedzialności związane są pewne trudności: Nie jest zdefiniowane, czym jest zmiana. Nie jest zdefiniowane,… Dowiedz się więcej »
D jak Dependency Inversion Principle, czyli Zasada odwrócenia zależności
Dependency inversion principle — Zasada odwrócenia zależności Wysokopoziomowe moduły nie powinny zależeć od modułów niskopoziomowych i detali, lecz zależność powinna wynikać z abstrakcji. Wszystkie wysokopoziomowe moduły powinny być związane z niskopoziomowymi za pomocą abstrakcji. Abstrakcje nie powinny zależeć od detali, lecz to detale powinny być zależne od abstrakcji. Pomocne w spełnieniu tej zasady jest przestrzeganie tych reguł: Każda zmienna w klasie jest referencja do abstrakcji. Wszystkie klasy dziedziczą po abstrakcji. Żadna klasy potomna… Dowiedz się więcej »
I jak Interface segregation principle, czyli Zasada segregacji interfejsów
Interface segregation principle — Zasada segregacji interfejsów Wiele dedykowanych i małych interfejsów jest lepsze niż jeden ogólny. Celem zasady segregacji interfejsów jest wyzbycie się z oprogramowania interfejsów, które odpowiadają za robienie wielu rzeczy. Źle zaprojektowane interfejsy mają tendencje do rozrastania się do zbyt wielkich rozmiarów, stają się one przez to niespójne. Klasy, które je implementują, muszą implementować metody, których nie powinny. Zależne są one od metod, których nie używają. Regułę… Dowiedz się więcej »
L jak Liskov Substitution Principle, czyli zasada podstawień Barbary Liskov
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).… Dowiedz się więcej »
O jak Open-closed principle, czyli zasada otwarte/zamknięte
Open-closed principle — Zasada otwarte/zamknięte Każdy składnik oprogramowania powinien być otwarty na rozszerzenia i zamknięty na modyfikacje. Dotyka ona dwóch zagadnień: Zagadnienie otwarte — Składniki powinny być stworzone w sposób umożliwiający łatwe rozszerzenie ich zachowania. Zmiana ich zachowania nie wymaga zmiany istniejącego kodu, lecz dopisanie nowego. Zagadnienie zamknięte — Modyfikacja zachowania nie powinna wiązać się ze zmianą już istniejącego kodu. Regułę tę można stosować do metod, funkcji, klas, modułów oraz pakietów. Do jej stosowania… Dowiedz się więcej »
S jak Single responsibility principle, czyli zasada jednej odpowiedzialności
Single responsibility principle — Zasada jednej odpowiedzialności Każda klasa powinna mieć tylko jeden powód do zmiany. Zgodnie z tą zasadą, każda klasa powinna: Tylko jeden cel istnienia. Tylko jedną odpowiedzialność. Tylko jedno zadanie do wykonania. Tylko jeden powód do modyfikacji. Regułę tę można stosować do metod, funkcji, klas, modułów oraz pakietów. Zalety Czytelniejszy kod. Łatwiejsze do zrozumienia. Brak klas-bogów — klas, które robią wszystko (albo bardzo dużo) i są zmieniane przy prawie każdej zmianie w oprogramowaniu. Łatwiejsze… Dowiedz się więcej »
SOLID
SOLID SOLID jest podstawowym pojęciem w programowaniu obiektowym. Został przedstawiony przez Roberta C. Martina, który zebrał 5 zasad w skrót SOLID. Jest to akronim 5 zasad dobrego programowania obiektowego: Single responsibility principle – Zasada jednej odpowiedzialności. Open/closed principle – Zasada otwarte-zamknięte. Liskov substitution principle – Zasada podstawienia Liskov. Interface segregation principle – Zasada segregacji interfejsów. Dependency inversion principle – Zasada… Dowiedz się więcej »
Początek mini projektu: Poznaj zasady SOLID i OOP
Część! Cele i ramy czasowe Rozpoczynam dziś nowy mini projekt. Codziennie przez najbliższy miesiąc będę poświęcał na ten projekt 1 godzinę. Jego celem jest poprawienie swojej znajomości zasad SOLID i OOP, czyli podstaw związanych z dobrym programowaniem w jakimkolwiek języku obiektowym. Dlaczego 1 miesiąc? Dlaczego 1 godzina dziennie? Słyszałem, że wystarczy przez 3 miesiące poświęcać danej tematyce 20 minut dziennie, czyli poświęcić 90… Dowiedz się więcej »