Lekcja nr 1 - Co to jest obiekt.

Obiektem jest wszystko. Słońce, które teraz nie grzeje zbyt mocno, komputer, którego teraz używasz... Ty, twoja ręka - wszystko jest obiektem.

Programowanie obiektowe pozwala w bardzo podobny sposób przedstawić obiekty.

Co to jest więc ten obiekt?

Obiekt to mała cegiełka, z których zbudowany jest program.

Obiekty mogą się ze sobą porozumiewywać, dziedziczyć po sobie, czy zawierać przyjaźnie.

Zapowiada się ciekawie, czyż nie? :D

 

Obiektem jest zmienna, której typem jest klasa.

Klasa jest bardzo podobna do struktury, z tym, że:

  1. Wszystkie jej składowe są domyślnie prywatne.
  2. Brzmi fajniej i profesjonalniej.

Struktury są po prostu używane do reprezentowanie prostych danych.

 

Specyfikatory dostępu:

private: Nie można dostać się do składowych z zewnątrz, dostęp po dziedziczeniu możliwy tylko przez rzutowanie w górę (UpCasting).

protected: Nie można dostać się do składowych z zewnątrz, składowe są dziedziczone

public: Wszystko jest publiczne, każdy ma tu dostęp, składowe są dziedziczone.

 

Konstruktor:

Konstruktorów może być wiele dzięki polimorfiźmie. Umieszczony w nich kod wykonuje się przy alokowaniu pamięci.

Destruktor:

Destruktor może być tylko jeden, wykonuje się przy zwalnianiu pamięci.

 

Jak to wygląda w praktyce?

 

#include <iostream>
using namespace std;

class Testowa

{
private: //kwalifikator dostępu
    int x; //składowa, pole
protected: //kwalifikator dostępu
    float y; //składowa, pole
public: //kolejny kwalifikator dostępu
    Testowa(int x = 10, float y = 15); //konstruktor
    void Wypisz_Skladowe() { cout << x << '\n' << y; } //Składowa, metoda - Tylko składowe mają dostęp do prywatnych i chronionych składowych
    ~Testowa() { cout << "Zmywam sie!"; } //destruktor

};

 

Testowa::Testowa(int x, float y)
{
    this->x = x;
    this->y = y;
}

int main()
{
    Testowa test(7);
    test.Wypisz_Skladowe();
    system("pause");
    return 0;
}

 

W konsoli ujrzymy:

7

15

 

Jak pewnie sami zauważyliście, występuje tu "this". Co to robi? Po prostu wskazuje na składową klasy, używa się tego przy pokrywających się nazwach.