10. Klasy
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
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
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 (::).
struct
nazwa_struktury
{
public:
deklaracje danych
deklaracje/definicje funkcji (metod)
private:
deklaracje danych
deklaracje/definicje funkcji (metod)
};
class
nazwa_klasy
{
private:
deklaracje danych
deklaracje/definicje funkcji (metod)
public:
deklaracje danych
deklaracje/definicje funkcji (metod)
};
Klasa jest typem deklarowanym przez u ytkownika
Nazwa_struktury
definiuje nowy typ danych zwanych
obiektami
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 de-
klaracj 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
.
5. Metody stałe
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 nie-
stał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
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 de-
klarowane wewn trz klasy (gdy nie potrzebuj bezpo redniego dost pu do re-
prezentacji); 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.
this