Archiwa tagu: programowanie
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… Czytaj dalej »
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ą… Czytaj dalej »
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… Czytaj dalej »
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… Czytaj dalej »
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… Czytaj dalej »
Ć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… Czytaj dalej »
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).… Czytaj dalej »
Ć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… Czytaj dalej »
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ą… Czytaj dalej »
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ć… Czytaj dalej »
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… Czytaj dalej »
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… Czytaj dalej »
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… Czytaj dalej »
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… Czytaj dalej »