Archiwum kategorii: Projekt Poznaj zasady SOLID i OOP

Projekt Poznaj zasady SOLID i OOP

Praca cząstkowa w Metodzie Kanban

przez Karol Bocian | 1 kwietnia, 2020

Praca cząstkowa w metodzie Kanban Praca cząstkowa w metodzie Kanban to liczba zadań aktualnie realizowanych. Jest ona limitowana z góry za pomocą limitu WIP — Work In Progress — Limit pracy w toku. Mniejsza ilość pracy cząstkowej sprawia, że przepływ zadań przez proces jest szybszy. Krócej realizowane są zadania, ponieważ jednocześnie jest ich robiona mniejsza liczba i… Czytaj dalej »

Composition Over Inheritance, czyli Kompozycja ponad dziedziczeniem

przez Karol Bocian | 1 marca, 2020

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… Czytaj dalej »

Lod — Law of Demeter, czyli Prawo Demeter

przez Karol Bocian | 29 lutego, 2020

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ą… Czytaj dalej »

OOP — Object Oriented Programming, czyli programowanie obiektowe — Modelowanie dziedziny

przez Karol Bocian | 17 marca, 2020

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… Czytaj dalej »

OOP — Myślenie obiektowe

przez Karol Bocian | 1 marca, 2020

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ć… Czytaj dalej »

OOP — Object Oriented Programming, czyli programowanie obiektowe

przez Karol Bocian | 18 lutego, 2020

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… Czytaj dalej »

Ćwiczenia z SOLID — Kata

przez Karol Bocian | 15 lutego, 2020

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… Czytaj dalej »

Podsumowanie połowy projektu: Poznaj zasady SOLID i OOP

przez Karol Bocian | 14 lutego, 2020

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… Czytaj dalej »

Ćwiczenia z SOLID

przez Karol Bocian | 13 lutego, 2020

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… Czytaj dalej »

CI jak Ćwiczenia Dependency Inversion Principle, czyli Zasada odwrócenia zależności

przez Karol Bocian | 12 lutego, 2020

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.… Czytaj dalej »

CI jak Ćwiczenia Interface segregation principle, czyli Zasady segregacji interfejsów

przez Karol Bocian | 11 lutego, 2020

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ć… Czytaj dalej »

CL jak Ćwiczenia Liskov Substitution Principle, czyli zasada podstawień Barbary Liskov

przez Karol Bocian | 10 lutego, 2020

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… Czytaj dalej »

CO jak Ćwiczenia Open/closed principle, czyli Zasada otwarte-zamknięte

przez Karol Bocian | 10 lutego, 2020

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ć… Czytaj dalej »

CS jak Ćwiczenia Single responsibility principle, czyli zasada jednej odpowiedzialności

przez Karol Bocian | 4 marca, 2020

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,… Czytaj dalej »

D jak Dependency Inversion Principle, czyli Zasada odwrócenia zależności

przez Karol Bocian | 24 lutego, 2020

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… Czytaj dalej »

I jak Interface segregation principle, czyli Zasada segregacji interfejsów

przez Karol Bocian | 11 lutego, 2020

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łę… Czytaj dalej »

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).… Czytaj dalej »

O jak Open-closed principle, czyli zasada otwarte/zamknięte

przez Karol Bocian | 7 lutego, 2020

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… Czytaj dalej »

S jak Single responsibility principle, czyli zasada jednej odpowiedzialności

przez Karol Bocian | 7 lutego, 2020

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… Czytaj dalej »

SOLID

przez Karol Bocian | 7 lutego, 2020

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… Czytaj dalej »

Początek mini projektu: Poznaj zasady SOLID i OOP

przez Karol Bocian | 2 marca, 2020

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… Czytaj dalej »