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:
- Wszystkie jej składowe są domyślnie prywatne.
- 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.