Ciąg Fibonacciego

Ciąg Fibonacciego jest ciągiem rekurencyjnym. Każdy wyraz, oprócz dwóch pierwszych jest sumą dwóch poprzednich wyrazów. Pierwszy i drugi element ciągu jest równy 1, a każdy następny otrzymujemy dodając do siebie dwa poprzednie.

Silnia

Najprostsza implementacja silni w C# polega na wykorzystaniu rekurencji, ale w tym wypadku lepszym rozwiązaniem będzie rozwiązanie iteracyjne:

FizzBuzz

Napisz program, który wyświetla liczby od 1 do 100. Dla liczb podzielnych przez 3 niech program wyświetli tekst “Fizz”, dla liczb podzielnych przez 5 niech wyświetli “Buzz”, a dla liczb podzielnych przez 15 niech wyświetli “FizzBuzz”.

Kąt między wskazówkami

Jak znaleźć kąt między wskazówkami godzinowymi i minutowymi zegara w dowolnym momencie? Użytkownik wprowadzi godzinę i minutę, a metoda powinna podać kąt między wskazówką godzinową a minutową w tym podanym czasie.

Poprawność rozmieszczonych nawiasów

Napiszemy funkcję sprawdzającą poprawność rozmieszczonych nawiasów w stringu. Będziemy sprawdzać ciąg pod kątem zrównoważonego nawiasu, czyli czy wszystkie nawiasy otwierające mają nawias zamykający i czy są one logicznie umieszczone w ciągu. Takie sprawdzanie może służyć do sprawdzania plików xml, json itp…

Dependency Inversion Principle – DIP

Moduły wysokopoziomowe nie powinny zależą od modułów niskopoziomowych, obie grupy modułów powinny zależeć od abstrakcji. Abstrakcje nie powinny zależeć od szczegółów rozwiązania, to szczegóły powinny zależeć od abstrakcji.

Interface Segregation Principle – ISP

Teraz omówimy zasadę segregacji interfejsów jest to czwarta zasada SOLID, która opisuje, jak powinniśmy projektować i używać interfejsy w naszych aplikacjach. Zasada ta stanowi, że klienci (klasy) nie powinni być zmuszani do polegania na metodach, których nie używają. Kilka dedykowanych interfejsów jest lepsze niż jeden, który jest zbyt ogólny.

Liskov Substitution Principle – zastosowanie LSP

Przyjrzyjmy się teraz, jak możemy zastosować zasadę LSP w naszej aplikacji myjni samochodowej. Użytkownicy naszej aplikacji, zgłosili nam mały błąd który wprowadziliśmy, gdy modyfikowaliśmy nasz kod wprowadzając wzorzec fabryki DetailsPricingFactory do tworzenia różnych instancji typów mycia, teraz musimy to naprawić.

Liskov Substitution Principle – LSP

Teraz porozmawiamy o zasadzie podstawiania Liskov. Zasada podstawiania Liskov lub LSP, to trzecia z zasad SOLID która mówi, że:
Funkcje, które używają wskaźników lub referencji do klas bazowych,
muszą być w stanie używać również obiektów klas dziedziczących
po klasach bazowych, bez dokładnej znajomości tych obiektów.

Open/Closed Principle – zastosowanie OCP

Wyobraźmy sobie teraz hipotetycznie, że przychodzi nasz klient dla którego robimy aplikację i pojawia się nowy wymóg, który zmienia sposób działania naszej aplikacji w niektórych przypadkach. I to jest częsta, bardzo życiowa sytuacja która zdarza się nieustannie. I tak się składa, że firma postanowiła dodać nowy typ mycia Premium i potrzebujemy mechanizmu do obsługi tego nowego typu mycia.

Open/Closed Principle – OCP

Zasada otwarte/zamknięte lub OCP to jest druga z zasad SOLID, która mówi nam, że jednostki oprogramowania, takie jak moduły, klasy, funkcje i tak dalej, powinny być otwarte na rozszerzanie, ale zamknięte na modyfikacje.
Czyli powinna istnieć możliwość zmiany zachowania metody
bez konieczności edytowania jej kodu źródłowego.

Single Responsibility Principle – zastosowanie SRP

Ile obowiązków znaleźliście w CarWash?
Przedstawie teraz wszystkie które mogliście zauważyć.
1) Wszędzie tam, gdzie to robimy, Console.WriteLines(„coś”);
– jest przykładem tego, jak chcemy logować wszystko to co zachodzi w naszej aplikacji.