Wiemy już czym będziemy się zajmować. Mamy plan działania. Kolega Jacek czeka z niecierpliwością aż otrzyma od nas oprogramowanie do swojego banku. Pora więc przystąpić do kodu, prawda? Prawie. Zanim włączymy edytor i rozpoczniemy stukanie w klawiaturę zostało nam jeszcze kilka zagadnień do wyjaśnienia.
Jeśli spojrzymy na schemat, który umieściłem na końcu poprzedniej części to zobaczymy na nim wiele różnych bloków. Czemu w taki sposób zaprezentowałem całość? Mogłem przecież ograniczyć się do samego opisu słownego.
Jednak była to drobna sugestia i pomoc w kolejnych częściach tego kursu. Zrobiłem to dlatego, że język, który wybraliśmy do zrealizowania naszego pierwszego zlecenia również posługuje się takimi klockami – obiektami.
C# jest językiem obiektowym. Dlatego, zanim się zabierzemy za jego naukę, która pozwoli rozkręcić biznes Jackowi, powinniśmy poznać istotę programowania obiektowego. Sama idea jest prosta więc sądzę, że każdy kto przez ten kurs przechodzi będzie potrafił ją załapać.
Widziałem już wiele kursów, które o tym temacie nawet nie wspominały. Ot, było zdanie, że to język obiektowy i tyle. A uważam, że wstęp do tego, jakby nie patrzyć, abstrakcyjnego zagadnienia może być przydatny.
Nie przedłużając i przechodząc do konkretów.
Słowo „obiekt” jest Ci na pewno dobrze znane. W końcu jesteśmy otoczeni obiektami na co dzień. Krzesło przy którym siedzisz, komputer czy smartfon, na ekranie którego to czytasz, samochód, którym jeździsz do szkoły czy pracy. To wszystko są obiekty. I jest to jak najbardziej dobry punkt zaczepienia w dyskusji o obiektowości.
Wyobraź sobie zegar. Taki najprostszy zegar ścienny, który ma wskazówki i można w nim ustawić godzinę. To jest nasz obiekt. Posiada on pewne cechy takie jak kolor, średnicę tarczy czy długość wskazówek. Ma on też pewne zachowania i funkcje. Za pomocą konkretnych czynności, np. kręcąc pokrętłem, możesz zmienić godzinę jaką pokazuje.
Sam w sobie zmienia kąt o jaki obrócone są wskazówki po upływie sekundy/minuty/godziny. Co więcej zegar jako całość zbudowany jest z mniejszych elementów, które również posiadają swoje cechy i są produkowane oddzielnie.
Mamy więc pewien obiekt, który może się składać z innych obiektów. Te wszystkie obiekty wchodzą między sobą w interakcję. Bo kiedy kręcimy pokrętłem do ustawiania godziny to jego ruch powoduje zmianę wartości w innych elementach, np. kąt pod jakim znajduje się wskazówka zegara.
Przyjmijmy więc, że obiekty są to zebrane razem właściwości,cechy i zachowania, które razem tworzą spójną całość.
Jeżeli na początku będziesz je sobie wyobrażał jako istniejące w rzeczywistym świecie przedmioty to w porządku. Dlaczego mówię, że na początku? Ponieważ dosyć szybko dojdziesz do momentu kiedy obiekty przestaną pasować do takiego odniesienia do rzeczywistości. Bo widział ktoś kiedyś na żywo obiekt, który jest „transakcją przelewu pieniędzy”?
Takim bardziej abstrakcyjnym bytem, który można znaleźć w rzeczywistości niech będzie wiadomość. Jesteś sobie w stanie wyobrazić wiadomość jako fizyczny obiekt? Nie bardzo.
Możemy widzieć list, email, SMS. Ale nie wiadomość samą w sobie. A mimo to wiemy, że wiadomości mają treść, nadawcę i odbiorcę. Mogą mieć warunki „przekaż tą wiadomość wszystkim z grupy, tylko Adamowi nie mów tego ostatniego zdania”. I właśnie takie byty jak ta wiadomość również są nazywane obiektami w programowaniu obiektowym.
Obiekty są to zamknięte zbiory pewnych właściwości i zachowań. W realnym życiu znamy je pod postacią przedmiotów, które nas otaczają. W programowaniu jednak obiekty niekoniecznie muszą odpowiadać rzeczywistym przedmiotom. Mogą to też być pewne zadania, operacje, czynności. Są więc szerszym pojęciem niż przedmioty w otaczającej nas rzeczywistości.
Programowanie obiektowe polega na zebraniu grupy obiektów i wprowadzeniu interakcji pomiędzy nimi. Obiekty używając własnych funkcji i funkcji innych obiektów doprowadzają do rozwiązania postawionego przed nim zadania. W naszym przypadku takim zadaniem będzie rozpoczęcie funkcjonowania banku naszego kolegi Jacka.
Poprzednia lekcja – Pomóżmy koledze, który otwiera bank
Leave a Comment