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;
}