background image

 

10. Klasy 

 

background image

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

 

 

background image

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

background image

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  

 









w stałej metodzie klasy 

X

, typem 

this

 jest  

const 

 









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