Programowanie obiektowe

Wszystkie nowoczesne języki programowania wspierają programowanie obiektowe. W C++ to czy chcemy programować obiektowo, czy strukturalnie zależy wyłącznie od nas. Jednak C# jest językiem, który pozwala pisać aplikacje tylko obiektowo. Czy to zaleta, czy wada? Według mnie jak najbardziej zaleta – programowanie obiektowe jest znacznie logiczniejsze i pozwala na lepsze uporządkowanie kodu, co jest bardzo istotne w dużych projektach. Nie widzę, więc sensu aby jakikolwiek nowoczesny język programowania wspierał programowanie strukturalne.

Klasy

Podstawowym elementem kodu każdego pisanego obiektowo programu są tzw. klasy. Czym jest klasa? Najprościej rzecz ujmując to taki „kontener”, w którym znajdują się metody(funkcje), oraz pola(zmienne). W c# tworzymy ją tak:

Jak widać to na powyższym kodzie klasa musi znajdować się w jakiejś przestrzeni nazw. Kiedy już ją mamy, możemy w niej umieścić dowolną ilość różnych klas. Należy przy tym zaznaczyć, że nazwa każdej klasy w obrębie tego samego namespace’a, musi być unikalna – w końcu jakoś trzeba je rozróżniać ;).

No dobrze, ale właściwie jakie zastosowanie mają te klasy…

Bardzo szerokie! Załóżmy, że chcemy napisać program, który będzie przechowywał informacje o pacjentach w przychodni. Wiadomo, każda osoba ma imię, nazwisko, PESEL, adres zamieszkania itd. Trzeba na tych danych jakoś logicznie operować. Z pomocą przychodzą właśnie klasy. Możemy stworzyć taką, dzięki której będziemy mogli w uporządkowany sposób operować na danych naszych pacjentów. Jak to będzie wyglądać?

Pomijając fakt, że programując nie powinno używać się polskich nazw… 😛 Mamy już klasę, którą możemy łatwo użyć w naszym programie:

Jak widać dzięki jednej klasie, możemy tworzyć wiele obiektów typu „Pacjent” i przypisywać do nich właściwości takie jak Imię, Nazwisko i tak dalej… W powyższym przykładzie stworzyliśmy obiekt Michal, typu Pacjent, któremu przypisaliśmy Imię i Nazwisko. Z takim obiektem możemy później zrobić cokolwiek innego – na przykład wyświetlić go na ekranie, wraz z właściwościami.

Konstruktor

Jak zapewne zdążyłeś zauważyć w powyższym przykładzie, przypisywanie właściwości w sposób  Michal.Imie = „Michal”; (…) może być trochę nieeleganckie. Można ten zapis skrócić, wyposażając naszą klasę w konstruktor.

Konstruktor jest elementem, który jest wywoływany zawsze, kiedy tworzymy nowy obiekt klasy. Jeżeli sami go nie stworzymy to podczas kompilacji zostanie wygenerowany domyślny konstruktor, który jest… pusty. Jednak czasami zachodzi potrzeba użycia konstruktora, więc warto znać zasadę jego działania. Tak, więc konstruktor charakteryzuje to, że:

  • Jest wywoływany zawsze, po utworzeniu obiektu klasy
  • Domyślnie jest pusty
  • Zawsze jest publiczny i posiada nazwę taką jak nazwa klasy
  • Nie jest metodą, więc nie zwraca wartości

Wracając do naszego kodu – jak widać stworzenie konstruktora, który przyjmuje argumenty, automatycznie nadaje wymóg przypisania jakiejś wartości każdej właściwości, już przy tworzeniu samego obiektu. Sam konstruktor zaś przyjmuje te argumenty i przypisuje ich wartości do właściwości obiektu. Ufff, trochę zagmatwane wyjaśnienie, ale nie wiem jak to jaśniej opisać 😉

Modyfikatory dostępu

Programując obiektowo, chcąc – nie chcąc i tak spotkasz się z tzw. modyfikatorami dostępu. Czym są? W dużym uproszczeniu określają one, czy z poziomu innej klasy, możemy mieć dostęp do metod/pól innej klasy. Jednak może zacznijmy od początku…

Jednym z głównych założeń programowania obiektowego, jest hermetyzacja klas. Chodzi o to, że w obrębie jednej klasy możemy wywoływać wszystkie metody, które się w niej znajdują. Analogicznie, możemy operować na polach. Jeżeli zadeklarujemy jakąś zmienną w metodzie – to możemy używać jej tylko w tejże metodzie. Nie ma do niej dostępu z zewnątrz i z tym nie da się już nic zrobić(bezpośrednio). Jeżeli chodzi o pola i metody zadeklarowane wewnątrz klasy to domyślnie nie są one dostępne z poziomu innych klas. Jednak możemy to zmienić stosując modyfikator dostępu public.

Może teraz przykład:

Jak widać, z poziomu innej klasy możemy wywołać tylko metodę, która jest publiczna. Do metody prywatnej nie mamy dostępu. Analogicznie jest w przypadku właściwości(pól).

Modyfikatorów dostępu jest kilka, jednak private i public są tymi podstawowymi i najczęściej używanymi. Szczerze powiedziawszy – sam nigdy innych nie używałem 😛

Słowo kluczowe static

Czasami zachodzi potrzeba stworzenia klasy, która będzie służyła np. tylko do wykonania jakiejś czynności i zwrócenia danych, czy też do jakiś innych czynności, które nie przychodzą mi w tym momencie do głowy. W takim przypadku, dobrym rozwiązaniem mogą być statyczne metody. W przypadku statycznych metod i właściwości nie tworzy się obiektów klas, tylko po prostu wywołuje metodę z wnętrza klasy lub odczytuje wartość jakiejś właściwości/pola. Przykład:

Jak widać słowo static możliwa nam proste wywołanie metody z wnętrza innej klasy.

 

Uff, to byłoby chyba na tyle z podstaw programowania obiektowego 😉 Przynajmniej tyle byłem w stanie sam napisać 😉

187 total views, 1 views today