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

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.

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 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.