Podstawy programowania obiektowego #1 – Klasa i obiekt

Podstawy programowania obiektowego – klasa i obiekt

Skoro trafiłeś, Czytelniku, na ten artykuł, to znaczy, że chcesz postawić pierwsze kroki w tworzeniu oprogramowania i poznać podstawy programowania obiektowego (o tym, czym jest taki paradygmat programowania, oraz jakie są inne możesz przeczytać w artykule Paradygmaty programowania). W tym wpisie, pierwszym z cyklu wprowadzającego do nauki programowania obiektowego, spróbuję wyjaśnić czy co to w ogóle są te obiekty i jak się do nich mają klasy. Kolejne lekcje stopniowo będą wprowadzały bardziej rozszerzone pojęcia i techniki.

Obiekt w programowaniu obiektowym

Wszystko jest obiektem. Odnosząc programowanie obiektowe do rzeczywistości, możesz to sobie zwizualizować dokładnie w ten sposób. Ekran na który patrzysz – jest obiektem. Mysz, którą trzymasz w dłoni – również jest obiektem. Tak samo jak kółko myszy, albo jej lewy czy prawy przycisk. Cała klawiatura, jak i każdy z jej osobnych klawiszy. Obiekt w programowaniu obiektowym jest więc jakimś wyróżnionym wycinkiem rzeczywistości, jednostką reprezentującą jakiś fragment dziedziny Twojego programu, który możesz wyróżnić poprzez konkretne właściwości i/lub zachowanie.

Klasa wzorcem obiektu

Klasa natomiast stanowi pewien szablon, wzorzec obiektu. Opisuje właśnie to, jakie dany rodzaj obiektów ma właściwości i jakie zachowanie umożliwia, jaką ma funkcjonalność. Kontynuując przykłady z życia:

Na biurku mam 3 monitory. Mimo, że jeden jest monitorem LCD i ma przekątną 21 cali, a dwa pozostałe LED o przekątnej 23 cale, to wszystkie są obiektami tej samej klasy. Wszystkie mają takie właściwości jak technologia wykonania, długość przekątnej czy kolor obudowy. Wszystkie również mają podobną funkcjonalność – wyświetlają obraz z komputera, można im regulować jasność i kontrast.

Jak możemy to przedstawić w języku programowania? Poniżej przykład w Javie.

public class Monitor {
    public int jasnosc = 10;
    public int kontrast = 5;
    public float przekatna = 21.0f;
    public String kolor_obudowy = "czarny";

    public Monitor(float przekatna, String kolor_obudowy) {
        this.przekatna = przekatna;
        this.kolor_obudowy = kolor_obudowy;
    }

    public void wyswietlObraz(){
        // Wyświetlanie obrazu
    }

    public void ustawJasnosc(int jasnosc){
        this.jasnosc = jasnosc;
    }

    public void ustawKontrast(int kontrast){
        this.kontrast = kontrast;
    }
}

Klasa deklarowana jest zawsze z użyciem słowa kluczowego class. Nie przejmuj się na razie słowem public, jest to modyfikator dostępu, o czym więcej piszę w artykule dotyczącym enkapsulacji. Pola jasnosc, kontrast, przekatna oraz kolor_obudowy właściwościami każdego obiektu klasy Monitor (każdy monitor posiada takie cechy). Oczywiście każdy monitor może mieć inne wartości tych cech, tutaj są ustawione wartości domyślne dla jasności (na 10) oraz kontrastu (na 5). Widzimy również, że każdy monitor ma takie funkcjonalności, czyli metody jak wyswietlObraz(), ustawJasnosc(), ustawKontrast(). Każdy obiekt klasy Monitor będzie je wykonał w ten sam sposób (chyba, że wykorzystamy abstrakcję lub dziedziczenie, ale o tym później). Odnosząc metody i właściwości klasy do innych paradygmatów programowania możemy porównać je w następujący sposób: metody są funkcjami wykonywanymi przez obiekt danej klasy, a właściwości to zmienne/stałe, które dotyczą obiektu danej klasy (lub całej klasy, o czym więcej w artykule dotyczącym statyczności).

Konstruktory

W tym fragmencie kodu ważny jest jeszcze jeden fragment – widoczny w linijce 7. konstruktor. Jest to specjalna metoda wywoływana w momencie tworzenia obiektu. Najczęściej wykorzystywana jest do uniwersalnej inicjalizacji wartości. Zwróć uwagę, że przekątna monitora czy kolor jego obudowy nie powinny się zmienić w czasie jego życia – wystarczy więc, że zostaną ustawione w czasie tworzenia monitora. Dlatego wartości te podajemy w konstruktorze, ustawiamy – i tak już zostają. W Javie konstruktor jest metodą o dokładnie takiej samej nazwie jak nazwa klasy i nie ma jawnie ustawionego zwracanego typu, gdyż zawsze zwraca obiekt klasy, którą konstruuje.

Chcąc stworzyć monitor o przekątnej 20 cali i srebrnym kolorze obudowy możemy wywołać więc: Monitor srebrnyMonitor = new Monitor(20.0f, "srebrny"); Słowo kluczowe new w Javie jest operatorem tworzenia nowego obiektu – wywołuje odpowiedni konstruktor.

Podsumowując

Z tej lekcji zapamiętaj:

  • Klasa jest wzorcem właściwości (cech) i metod (zachowania) obiektu, a obiekt jest konkretną instancją danej klasy.
  • Metoda to funkcja wywołana z obiektu wybranej klasy, realizująca jakieś jej zachowanie w konkretny sposób.
  • Konstruktor jest specjalną metodą wywoływaną w momencie tworzenia nowej instancji obiektu.

Następny artykuł: Podstawy programowania obiektowego #2 : Abstrakcja i dziedziczenie w programowaniu obiektowym

Zobacz więcej: Kurs programowania obiektowego #0 : Wstęp i spis treści

Podsumowanie
Tytuł artykułu
Klasa i obiekt w programowaniu obiektowym
Opis
Dowiedz się jakie są podstawy programowania obiektowego i jak korzystać z podstawowych bloków budujących Twoje programy - klasy i obiektu.
Autor

Leave a Comment

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