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.
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.
Najprostsza implementacja silni w C# polega na wykorzystaniu rekurencji, ale w tym wypadku lepszym rozwiązaniem będzie rozwiązanie iteracyjne:
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”.
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.
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…
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.
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.
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ć.
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.
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.
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.
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.