[KURS C#] Klocki układanki

W trakcie przygotowywania warsztatu do pracy utworzyliśmy zalążek naszego projektu. Jednak zanim zagłębimy się w niego i wypełnimy treścią, czas na teoretyczne zapoznanie się z najważniejszymi pojęciami jakie będziemy wykorzystywać.

W tej lekcji przekazuję wiedzę teoretyczną, bo zaprzyjaźnienie się z kilkoma terminami pozwoli nam lepiej zrozumieć to, co będzie się działo w trakcie realizacji projektu dla naszego kolegi Jacka.

Na chwilę odejdźmy więc od zlecenia jakie dostaliśmy i chodźmy na spacer przemyśleć kilka spraw…

Kurs w formie tekstowej nie jest tym czego szukasz? Świetnie! Bo z kodem CHCE_WIECEJ można uzyskać dostęp do kursu video uczącego podstaw języka C# 15% taniej! Kurs zawiera wiedzę z poniższego kursu i jeszcze więcej! Sprawdź na kurs-szarpania.pl!

Z klasą

Jak już wspomniałem w części poświęconej obiektom – język C# jest językiem obiektowym. W tym wypadku związane jest to z obecnością czegoś co nazywa się klasą. Słowo samo w sobie jest na pewno każdemu z nas znane. Dowiedzmy się jednak co oznacza w aktualnie omawianym przypadku.

Schemat

We jednej z wcześniejszych lekcji dowiedzieliśmy się już czym są obiekty. Weźmy więc jako przykład obiekty ze świata rzeczywistego. Niech to będzie głośnik. Być może jakiś stoi na Twoim biurku. Ja mam dwa przed oczami.

Są to bez wątpienia istniejące, fizyczne obiekty. Konkretne egzemplarze, które wyszły z fabryki. Gdzieś w innym domu ktoś patrzy na taki sam model głośników. Jednak nie są to dokładnie te same fizyczne egzemplarze.

Jedyne co je łączy to fakt, że powstały według tego samego schematu. Według tego samego projektu. Nie musiały powstać w jednej fabryce, w jednym miejscu.

Ważne, że posiadają takie same cechy i zachowania, bo jakiś zespół projektantów przygotował schemat wg którego mają zostać wyprodukowane. Łączy je też nazwa modelu pod jaką są sprzedawane.

Nie bez powodu podkreślam tu słowo schemat. Bo właśnie do takiego schematu, projektu na papierze można porównać klasę z języka C#. Przynajmniej na poziomie na jakim się w tych naszych lekcjach będziemy poruszali przez większość czasu.

Produkcja

Klasy są to więc opisy tego jak wyglądać będą i zachowywać się obiekty, jakie na ich podstawie utworzymy. Będą to te same modele, a więc obiekty tego samego typu, powstałe z jednej klasy. Będą się różnić „numerem seryjnym” lub niektórymi parametrami jeżeli jakieś wartości, takie jak kolor, mogą być zmieniane. Jednak wszystkie powstaną według jednego projektu – utworzonej przez nas klasy.

Co więcej projekt omawianych przez nas głośników będzie prawdopodobnie zakładał użycie komponentów, które powstają na podstawie innych projektów. Są to obiekty innych klas, z których możemy korzystać aby zbudować to co potrzebujemy. I będą one uwzględnione na schemacie jako gotowe klocki, których po prostu używamy.

Trzymaj to!

Tak mówimy o tych obiektach i mówimy. Ale o ile w prawdziwym życiu jakiś obiekt możemy zobaczyć i trzymać w ręce tak w programie chyba nie jest to możliwe? Bo nie jest to coś co możemy jakoś złapać, dotknąć, zamknąć w opakowaniu, prawda?

Nie do końca. Jest sposób aby móc „trzymać”, „przechowywać” nasze obiekty. Tym sposobem są zmienne. Możemy je sobie wyobrazić jako pojemniki do przechowywania konkretnego typu substancji.

Tak jak mamy osobne pojemniki na benzynę, gaz, czy zupę tak samo zmienne są przystosowane do przechowywania konkretnego typu obiektów.

Pudełko

Wróćmy do analogii z produkcją głośników.

Mamy opis budowy konkretnych modeli głośników. Załóżmy, że fabryka produkuje głośniki SUPERBASS i głośniki NICESOUND. Te nazwy to są nasze klasy wspomniane trochę wcześniej. To co fizycznie otrzymujemy to obiekty tych klas. Są to konkretne egzemplarze i są one określonego typu.

I teraz mając wyprodukowane te egzemplarze chcemy je zapakować do wysyłki. Co wtedy robimy? Pakujemy głośniki typu SUPERBASS do pudełek przeznaczonych na model SUPERBASS, a głośniki typu NICESOUND lądują w pudełkach z nadrukowanym zdjęciem modelu NICESOUND. I właśnie takimi pudełkami są zmienne. Są przeznaczone na konkretny typ obiektu.

Co by tu zrobić…

Dobra nasza. Mamy już schemat głośnika. Wyprodukowaliśmy też egzemplarz tego głośnika, który ma określony kolor, wielkość itd. Mamy też pudełko, do którego ten głośnik możemy spakować aby potem móc go przetransportować i sprzedać.

Ale nadal nie wiemy czy nasz głośnik jest czymś więcej niż eksponatem na półkę. Co właściwie może robić? Po co są wszystkie umieszczone na nim pokrętła?

Nie dowiedzieliśmy się również co odpowiada za te wszystkie czynności naokoło, takie jak transport czy składanie głośników.

Wykonanie

Tym brakującym elementem, który opisuje zachowania i czynności są metody/funkcje. Dla uproszczenia będziemy korzystać z tych terminów zamiennie i również takie ich używanie jest dosyć częstą praktyką.

Także jeżeli gdzieś w tekście będzie się pojawiać słowo „metoda” to będzie to równoznaczne z użytym w innym miejscu słowem „funkcja”.

Jeżeli ktoś chce się dowiedzieć jakie różnice można pomiędzy tymi słowami wyróżnić to może przeczytać chociażby tę rozmowę na StackOverflow.

Jednak jeżeli dopiero zaczynasz naukę programowania obiektowego to nie polecam mieszać sobie w głowie i próbować zrozumieć tych różnic.

Trochę matematyki

Słowo „funkcja” jest Ci zapewne znane chociażby z lekcji matematyki. Podając wartość x dostawaliśmy wynik jakiegoś równania, korzystając z równania jakie było w tej funkcji. I m.in. w taki sposób działają funkcje w programowaniu.

Z tym, że zarówno jakaś wartość początkowa jak i zwracanie wyniku są opcjonalne. To znaczy, że możemy dostać wynik bez podawania wartości początkowej jak również podać wartość, z której bezpośrednio nie otrzymamy konkretnego wyniku.

Zachowuj się

Jeżeli będziemy się nadal trzymali obrazowych porównań to funkcje w naszych programach możemy porównać też do czynności.

Pozostając w temacie głośników.

Jedną z ich funkcji jest zamiana sygnału elektrycznego w dźwięk. Ta funkcja dostaje z kabla jakiś sygnał elektryczny i na wyjściu zwraca dźwięk, który słyszymy. To co dzieje się pomiędzy to właśnie funkcja.

Korzysta ona z obiektów, takich jak wzmacniacz. Korzysta też z funkcji tych obiektów. One zaś mogą korzystać z kolejnych, mniejszych obiektów, używać ich funkcji, zwracać jakiś rezultat itd.

W ten sposób wykonywane jest jakieś działanie.

Inną funkcją dostępną w głośniku jest zmiana głośności. Kręcąc pokrętłem zmieniamy poziom głośności dźwięku na jaki zamieniany jest sygnał elektryczny. Takich operacji możemy wymienić jeszcze kilka. Wszystkie one są funkcjami wyprodukowanych przez nas głośników.

Wszystko się składa w całość

Rysujemy schemat. Fabryka na jego podstawie produkuje obiekty (korzystając być może z innych obiektów). Są one pakowane do odpowiednich pudełek, a następnie pozwalają wykonywać określone czynności.

Posługując się takim ciągiem wydarzeń możemy opisać klasę, zmienną i funkcję. A teraz, kiedy te pojęcia są nam znane możemy przystąpić do realizacji zadania jakie zostało przed nami postawione!

 

Poprzednia lekcja – wyposażamy warsztat

Następna lekcja – zacznijmy od rusztowania

Spis treści

Wiesz, że możesz mnie znaleźć nie tylko na tym blogu?

Wszystkie miejsca, w których udzielam się w internecie poznacz na stronie codewin.pl.

Szukasz książek dla programistów i jednocześnie chcesz wesprzeć tego bloga? Sprawdź ofertę wydawnictwa Helion klikając w TEN LINK.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *