10. Klasy
Stworzenie modularyzacji programów.
Umo liwienie definiowania typu u ytkownika.
Typ u ytkownika b dzie obejmował dane i metody działania na nich.
1. Składowe struktury:
a) dane
b) funkcje(metody)
struct nazwa_struktury
{ public:
//specyfikator dost pu
deklaracje składowych danych
deklaracje/definicje składowych funkcji (metod)
};
Metody to składowe funkcje słu
ce do obsługi składowych danych
Nazwa_struktury definiuje nowy typ danych zwanych obiektami Zawarcie w definicji struktury(klasy) danych i metod nazywa si enkapsulacj 2. Kontrola dost pu do składowych struktury i klasy
Je li zastrze emy, eby tylko(!) funkcje składowe:
a) zale ały bezpo rednio od reprezentacji danych
b) były u ywane do działania na obiektach tego typu
to dane powinny by zadeklarowane ze specyfikatorem dost pu private struct nazwa_struktury
class nazwa_klasy
{ public:
{ private:
deklaracje danych
deklaracje danych
deklaracje/definicje funkcji (metod)
deklaracje/definicje funkcji (metod)
private:
public:
deklaracje danych
deklaracje danych
deklaracje/definicje funkcji (metod)
deklaracje/definicje funkcji (metod)
};
};
Klasa jest typem deklarowanym przez u ytkownika
Uwagi:
struktura jest klas , której metody s domy lnie publiczne,
funkcje nie-metody nie maj dost pu do prywatnych składowych klasy,
tylko funkcje-metody mog "obsługiwa " składowe klasy,
prototypy metod nale y umieszcza w definicji klasy,
cz
publiczna stanowi interfejs do obiektów klasy,
definicje funkcji mog wyst pi w dowolnym miejscu,
w celu powiadomienia kompilatora, e funkcja jest metod okre lonej klasy nale y wykorzysta operator zasi gu (::).
Korzy ci wynikaj ce z takiego sposobu post powania:
bł d powoduj cy zł manipulacj danymi musi by spowodowany kodem metody,
u ytkownikowi takiego nowego typu (class) wystarczy zapozna si z deklaracj metody eby wiedzie jak z niej korzysta .
3. Konstruktory
Klasa to typ obiektu (a nie sam obiekt), wi c składowe dane nie mog by ini-cjowane w zwykły sposób!!!
Do inicjowania obiektów danej klasy słu
konstruktory.
Konstruktor – specjalna funkcja jawnie przeznaczona do inicjowania obiektów.
Cechy konstruktora:
1. jest funkcj
2. nie ma typu zwracanej warto ci
3. ma tak sam nazw co klasa
4. jest wywoływany automatycznie (je li jest konstruktor, to obiekty b d ini-cjowane automatycznie
5. mo e (cho nie musi) mie argumenty
6. do konstruktorów stosuje si te same reguły przeci
ania co do innych
funkcji
4. Składowe statyczne
1. Dana statyczna to zmienna, która:
a) jest cz
ci klasy,
b) nie jest cz
ci obiektu tej klasy,
c) posiada tylko jedn kopi (a nie jedn kopi na ka dy obiekt),
d) istnieje nawet wtedy, gdy nie został jeszcze zdefiniowany aden obiekt tej klasy,
e) definicj składnika statycznego (publicznego/prywatnego) musimy umie ci tak, aby miała zakres pliku (jak dla zmiennej globalnej).
2. Metoda statyczna to funkcja, która:
a) ma dost p do składowych klasy,
b) nie musi by wywoływana dla okre lonego obiektu;
c) mo e by wywołana na rzecz samej klasy,
d) korzysta tylko ze statycznych danych składowych,
e) dla metody statycznej nie jest zdefiniowany wska nik this.
Kwalifikator const u yty w deklaracji metody oznacza, e funkcja ta nie modyfi-kuje obiektu danej klasy.
Uwagi:
metod stał mo na wywoła zarówno dla obiektów stałych jak i niestałych
metod nie-stał mo na wywoła tylko dla obiektów nie-stałych
6. Samoodwołania
W celu tworzenia ła cucha operacji na danych składowych danej klasy, cz sto warto przekazywa referencj do aktualizowanego obiektu.
nazwa_klasy &
nazwa_metody ( lista_deklaracji_argumentów )
Je li nazwa_metody jest typu referencyjnego, to co jest wynoszone na nazwie tej funkcji?
this
this jest wska nikiem do obiektu dla którego wywołano metod
Uwagi:
w nie-stałej metodzie klasy X, typem this jest X
w stałej metodzie klasy X, typem this jest
const X
this nie jest "zwykł " zmienn :
• nie mo na pobra adresu this
• nie mo na przypisa na this
ka de odwołanie z klasy do jej niestatycznej składowej polega na niejaw-nym u yciu this w celu dostania si do składowej danego obiektu
7. Funkcje pomocnicze
Zwykle klasa ma pewn liczb funkcji z ni zwi zanych, które nie musz by deklarowane wewn trz klasy (gdy nie potrzebuj bezpo redniego dost pu do reprezentacji); s to tzw. funkcje pomocnicze.
Jak "zwi za " takie funkcje z dana klas ?
Umieszczaj c ich deklaracje w:
• tym samym pliku nagłówkowym co deklaracja klasy,
• w tej samej przestrzeni nazw co deklaracja klasy.