Programowanie obiektowe

 

Klasa – złożony typ danych, składa się z pól (właściwości) oraz metod (akcji).

 

Nazwa klasy

Pola

Metody

Uczeń

imie

nazwisko

klasa

 

ZmienKlase

WyswietlDane

Prostokat

bok a

bok b

ObliczPole

ObliczObwod

Wyswietl

 

Obiekt – reprezentant klasy, zmienna utworzona na podstawie klasy.

Np.

obiekt klasy Uczeń:

     Janek ("Jan", "Kowalski", "1c" )

obiekt klasy Prostokąt:

     P (10, 20)

 

Przykład deklaracji klasy:

 

class Uczen

{

   Uczen();        ß Konstruktor

   ~Uczen();       ß Destruktor

 

   string imie;

   string nazwisko;     ß pola   

   string klasa;

 

void ZmienKlase();     ß metody       

void WyswietlDane();

 };

 

Uczen::Uczen()

{

  cout << "Konstruktor \n";

}

 

Uczen::~Uczen()

{

  cout << "Destruktor \n";

}

 

void Uczen::ZmienKlase()

{

  cout << "Podaj klase: ";

  cin >> klasa;

}

 

void Uczen::WyswietlDane()

{

  cout << imie << " " << nazwisko << " ";

  cout << klasa << "\n";

}

 

Przykład deklaracji obiektu

 

Uczen Wojtek;

 

Przykład dostępu do obiektu

 

Wojtek.imie = "Wojciech";

Wojtek.nazwisko = "Nowak";

Wojtek.klasa = "1c";

 

Wojtek.WyswietlDane();

 

Konstruktor to metoda wywoływana automatycznie podczas tworzenia  obiektu.

Destruktor to metoda wywoływana automatycznie podczas usuwania  obiektu.

Obydwie metody mają taką samą nazwę jak klasa.

 

Dziedziczenie klas

 

Dziedziczenie polega na tworzeniu nowej klasy na podstawie klasy bazowej.  Dziedziczenie realizowane jest za pomocą symbolu : (dwukropek) , w następującej konstrukcji:

 

class klasa_potomna : public klasa_bazowa

{

  // definicja klasy

};

 

gdzie:

klasa potomna (klasa podrzędna, podklasa) to nowa klasa przejmująca (dziedzicząca) składowe klasy bazowej,

klasa bazowa (klasa podstawowa, klasa nadrzędna, nadklasa) to klasa już zdefiniowana, służąca jako pewien wzorzec dla nowej klasy potomnej. 

 

Przykład:

 

class Pracownik

{

private:    // składowe prywatne (nie dziedziczone)

  string nazwisko_kierownika;

public:

  string imie;

  string nazwisko;

  int wyn_zasadnicze;

 

  Pracownik()

  {

     cout << "Konstruktor klasy Pracownik\n";

  }

};

 

class Manager : public Pracownik   // klasa potomna

{

public:

  int premia;

  Manager()

  {

    cout << "Konstruktor klasy Manager\n";

  }

};

 

int main(int argc, char *argv[])

{

    Manager manager;

    manager.imie = "Jan";              //  skladowe

    manager.nazwisko = "Nowak";        //  dziedziczone

    manager.wyn_zasadnicze = 1000;     //  po Pracowniku 

 

    manager.premia = 500;  // skladowa klasy Manager

   

    system("PAUSE");

    return EXIT_SUCCESS;

}