02. Programowanie obiektowe

02. Programowanie obiektowe

Autor: Daniel Celeda

Opublikowano: 12/6/2005, 12:00 AM

Liczba odsłon: 237403

OOP (ang. object-oriented programming) – czyli programowanie obiektowe.

Większość współczesnych aplikacji pisana jest w językach obiektowych. Czym zatem są te obiekty? Często spotykam się ze stwierdzeniem, że „wszystko jest obiektem”. Wystarczy tylko rozejrzeć się wokół siebie żeby się z tym zgodzić. Szklanka, łyżka, stół, szafka itd. To wszystko są obiekty. Obiekty składają się z innych obiektów. Np. dom składa się z dachu, drzwi, okien. Drzwi z klamki, zawiasów itd. W zależności od potrzeb, powiązania między obiektami możemy rozpatrywać na różnych poziomach. Możemy także wyróżnić pojęcie „klasy”. Klasa określa nam typy obiektów, ale ich nie konkretyzuje np. Jaś jest obiektem, a człowiek to klasa. Inaczej mówiąc, Jaś jest obiektem klasy człowiek. Dom Jasia jest obiektem klasy Dom.

A co to ma wszystko wspólnego z programowaniem?

Jak się przekonamy, bardzo dużo. Programując w językach obiektowych możemy nasze programy składać z obiektów jak z klocków.

Obiekty a programowanie

Gdy próbujemy opisać jakiś obiekt z otaczającej nas rzeczywistości trudno nam wymienić jego wszystkie cechy. W zasadzie jest to niemożliwe. Programując, nie możemy sobie na to pozwolić, tak więc obiekty w naszych programach muszą być ściśle zdefiniowane. Musimy wiedzieć z jakich cech się składają i jakie wartości mają te cechy, dlatego należy zdecydować się jakie cechy są ważne i umieścić je w definicji klasy. Pozostałe cechy należy odrzucić

Zdefiniujmy więc klasę Dom:

Cechy:   - kolor ścian
- kolor dachu
- drzwi
- okno

Tyle nam wystarczy, a więc sami decydujemy jak dokładnego opisu nam potrzeba. Definicja klas powinna być adekwatna do celu jaki chcemy osiągnąć, np. jeśli w naszym programie będziemy musieli rozróżniać obiekty klasy Dom po kolorze ścian, to tylko ta cecha nam wystarczy, pozostałe będą zbędne.

Zdefiniujmy obiekt klasy Dom:

Dom Jasia
Kolor ścian:    biały
Kolor dachu:   czarny
Drzwi:   drzwi Jasia
Okno:   okno małe

Kolory to proste typy, które nie są obiektami. Jednak drzwi i okna to też obiekty, a więc potrzeba nam definicji klas: Drzwi oraz Okno.

Drzwi
Cechy: - materiał
- kolor
- stan
Okno
Cechy: - szerokość
- wysokość
- stan

A następnie obiekty:

Drzwi Jasia
Materiał:   drewno
Kolor:   brązowy
Stan:   zamknięte
Okno małe
Szerokość:   0.5 metra
Wysokość:   1 metr
Stan:   zamknięte

Cechy możemy utożsamiać ze zmiennymi w programowaniu (w klasie są to tzw. pola). Dodatkowo obiekt może wykonywać ustalone czynności, np. drzwi i okna mogą się otwierać. Możemy także założyć, że dom potrafi zmieniać swój kolor. Funkcje te nazywamy metodami.

Ostateczne definicje klas wyglądają następująco:

Dom
Pola:   - kolor ścian
- kolor dachu
- drzwi
- okno
Metody: - zmień kolor ścian
- zmień kolor dachu
Drzwi
Cechy: - materiał
- kolor
- stan
Metody:  - zamknij
- otwórz
Okno
Cechy:  - szerokość
- wysokość
- stan
Metody:  - zamknij
- otwórz

Jak to zrobić w C#?

 Przyjrzyjmy się programowi w C#, który stworzy nam taki własny mini-świat. Przypuszczam, że nie będzie łatwo go zrozumieć, ponieważ na tym etapie nie posiadamy wystarczającej wiedzy. Wystarczy, że oswoimy się z widokiem kodu napisanego w C#, a w ramach pracy domowej możemy spróbować przeanalizować linijkę po linijce i zastanowić się co mogą znaczyć. Na dokładne opisanie poszczególnych instrukcji przyjdzie czas w dalszych częściach kursu.

class Drzwi
{
    public string Material;
    public string Kolor;
    public string Stan;

    public void Otworz()
    {
        Stan = "Otwarte";
    }

    public void Zamknij()
    {
        Stan = "Zamknięte";
    }
}

class Okno
{
    public double Szerokosc;
    public double Wysokosc;
    public string Stan;

    public void Otworz()
    {
        Stan = "Otwarte";
    }

    public void Zamknij()
    {
        Stan = "Zamknięte";
    }
}

class Dom
{
    public string KolorScian;
    public string KolorDachu;
    public Drzwi DrzwiDomu;
    public Okno OknoDomu;

    public void ZmienKolorScian(string kolor)
    {
        KolorScian = kolor;
    }

    public void ZmienKolorDachu(string kolor)
    {
        KolorDachu = kolor;
    }
}

class
KlasaGlowna
{
    static void Main()
    {
        Drzwi drzwiJasia = new Drzwi();
        drzwiJasia.Kolor = "brązowy";
        drzwiJasia.Material = "drewno";
        drzwiJasia.Stan = "zamknięte";

        Okno oknoJasia = new Okno();
        oknoJasia.Szerokosc = 0.5;
        oknoJasia.Wysokosc = 1;
        oknoJasia.Stan = "zamknięte";

        Dom domJasia = new Dom();
        domJasia.DrzwiDomu = drzwiJasia;
        domJasia.OknoDomu = oknoJasia;
        domJasia.KolorScian = "biały";
        domJasia.KolorDachu = "czarny";
    }
}

Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży
Jak wykorzystać Copilot w codziennej pracy? Kurs w przedsprzedaży

Wydarzenia