Programowanie obiektowe Programowanie obiektowe ogólnie biorąc polega na operowaniu w programie pewnymi obiektami, które zawierają dane wraz z tzw. metodami, umożliwiającymi wykonywanie operacji na tych danych. Jedną z idei programowania obiek-towego jest maksymalne ograniczenie niekontrolowanego dostępu do pól obiektu przechowujących dane. Dostęp do pól powinien się odbywać wyłącznie przy pomocy metod zdefiniowanych w obiekcie (jest tzw. hermetyzacja). Podstawowa różnica między programowaniem strukturalnym a obiektowym polega na tym, że przy wywołaniu funkcji są przekazy-wane dane, przy programowaniu obiektowym natomiast wywołuje się metody, które operują na odpowiednich danych zawartych w polach obiektu.

Deklaracja klasy:

class nazwa_klasy

{

public:

nazwa_klasy();

//konstruktor

~nazwa_klasy();

//destruktor

pola_klasy;

prototypy_metod_klasy();

private:

prototypy_metod_klasy();

pola_klasy;

};

• Deklaracje klasy umieszcza się zwyczajowo w plikach nagłówkowych z rozszerzeniem .h natomiast definicje metod klasy umieszcza się w plikach .cpp.

• Podczas deklaracji możliwe jest zagnieżdżanie obiektów polegające na korzystaniu w danej klasie z obiektów innej klasy.

• Obiekty typu danej klasy tworzy się analogicznie jak zmienne innych typów.

Słowa kluczowe

public, private, protected.

• Pola i metody umieszczone po słowie public dostępne są bezpośrednio w całym programie, dostęp uzyskuje się za pomocą operatora kropki (dla obiektów tworzonych statycznie).

• Słowo private ogranicza bezpośredni dostęp do pól i metod umieszczonych po nim tylko do wnętrza danego obiektu, gdzie zostały zadeklarowane.

• Słowo protected umożliwia bezpośredni dostęp do pól i metod w klasie gdzie zostały zadeklarowane jak rów-nież w klasach pochodnych od danej klasy podczas korzystania z własności dziedziczenia.

Konstruktory i destruktory – są to specjalne metody wywoływane podczas tworzenia obiektu oraz jego usuwania.

• konstruktor nie może posiadać definicji zwracanego typu

• konstruktor bez żadnych argumentów jest konstruktorem domyślnym

• nazwa destruktora musi być poprzedzona znakiem tyldy

• destruktor nie posiada definicji typu zwracanego oraz nie przyjmuje żadnych argumentów

• nazwy konstruktora i destruktora muszą być zgodne z nazwą klasy

• konstruktor i destruktor muszą być zadeklarowane w części publicznej klasy

• domyślny konstruktor może być przeciążany

Przykład deklaracji klasy: class pojazd

{

int rocznik;

char nazwa[15];

protected:

int rocznik1;

public:

pojazd();

pojazd(int r, char *n);

void ustaw_r (int r);

int pobierz_r ();

void ustaw_naz(char *n);

char *wyswietl_naz();

void ustaw_r1 (int r1)

{rocznik1=r1;};

int pojemnosc;

};

Definicje metod dla powyższej klasy: pojazd::pojazd()

{

rocznik=0;

strcpy(nazwa,"");

}

pojazd::pojazd(int r,char *n)

{

rocznik=r;

strcpy(nazwa,n);

}

void pojazd::ustaw_r(int r)

{

rocznik=r;

}

int pojazd::pobierz_r()

{

return rocznik;

}

void pojazd::ustaw_naz(char *n)

{

strcpy(nazwa,n);

}

char *pojazd::wyswietl_naz()

{

return nazwa;

}