Professional Documents
Culture Documents
C++
mr.sc. Jasminka Tomljanovi, vii predava
Veleuilite u Rijeci
Sadraj
Vezana lista objekata
Prijatelj klase
Nasljeivanje
Virtualne metode i polimorfizam
Apstraktne klase
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
Veleuilite u Rijeci
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
Veleuilite u Rijeci
Definiranje klase
class student{
private: student *slijedeci; //pokaziva na slijedei
element liste
public:
//javni atributi podatkovni sadraj elementa liste
int mat_br;
char prez_ime[35];
int god_stu;
//metode sve operacije za rad s vezanom listom
...
...
}; //class
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
Veleuilite u Rijeci
Veleuilite u Rijeci
Poziv metode:
Veleuilite u Rijeci
Poziv metode:
Veleuilite u Rijeci
Veleuilite u Rijeci
Veleuilite u Rijeci
void sortiraj_listu(){
student *prethodni,*tekuci,*slijedeci;
int indikator,brojac=0;
do{ indikator = 0;
tekuci=this->slijedeci;prethodni=this;
while (tekuci->slijedeci){
slijedeci=tekuci->slijedeci;
if (tekuci->mat_br > slijedeci->mat_br){
prethodni->slijedeci=slijedeci;
tekuci->slijedeci=slijedeci->slijedeci;
slijedeci->slijedeci=tekuci;
indikator=1;} //if
prethodni=tekuci;
tekuci=tekuci->slijedeci;} //while
} while (indikator==1);
}; // sortiraj listu
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
10
Veleuilite u Rijeci
11
Veleuilite u Rijeci
Prijatelj klase
Prijatelj klase predstavlja izuzetak od
pravila da privatnim lanovima klase
mogu pristupati iskljuivo metode iste
klase.
Pojedina klasa moe dodijeliti nekoj
funkciji, metodi neke klase ili itavoj
klasi pravo pristupa vlastitim privatnim
i zatienim lanovima.
Takve funkcije, metode i klase nazivaju se
prijatelji klase, a oznaavamo ih
mr. sc. Jasminka Tomljanovi, vii predava
pomou kljune rijei friend.
11/12/16
12
Veleuilite u Rijeci
class osnovna{
friend void funkcija1();
// funkcija1 je prijatelj klase
osnovna
friend void kolega::fclan1();
// metoda fclan1 klase
kolega,
friend class prijatelj;
// kao i klasa prijatelj
private:
void privatna(){ // prijatelji klase mogu pozivati ovu
metodu
cout << "Privatni funkcijski clan!" << endl;
};
};
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
13
Veleuilite u Rijeci
Nasljeivanje
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
14
Veleuilite u Rijeci
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
15
Veleuilite u Rijeci
automobil
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
kamion
autobus
nosivost
broj_sjedala
ispis()
ispis()
16
Veleuilite u Rijeci
Veleuilite u Rijeci
javno dostupni
Primjer:
class lista{
protected: lista *slijedeci;
izvedenim klasama
}; //lista
class student:public lista{
dodjele tipa
...
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
//za
upotrebu
//operator
18
Veleuilite u Rijeci
Tipovi nasljeivanja
Prava pristupa naslijeenim lanovima klasa
mogu i ne moraju biti ista kao u osnovnoj
klasi, to je odreeno tipom nasljeivanja:
javno nasljeivanje (public) odreuje da
e svi atributi i metode osnovne klase
imati ista prava pristupa iz izvedene klase
kao i iz osnovne klase.
zatieno nasljeivanje (protected)
odreuje da e naslijeeni lanovi osnovne
klase biti dostupni iz izvedene klase, ali s
najviim pravom pristupa protected (tj.
svi javni lanovi osnovne klase postat e
19
mr.11/12/16
sc. Jasminka
Tomljanovi, u
vii izvedenoj).
predava
zatieni
Veleuilite u Rijeci
20
Veleuilite u Rijeci
osnovna
public: void fpub()
private: void
fpriv()
protected: void
fprot()
klasa_public
klasa_privat
e
izv_public
izv_private
public: void
fklasa_public()
public: void
fklasa_private()
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
klasa_protect
ed
izv_protecte
d
public: void
fklasa_protected()
21
Veleuilite u Rijeci
Viestruko nasljeivanje
klasa_prva
klasa_druga
int kilometraza,
godina
void
ispis(kilometraza,
godina)
klasa_izvedena
void ispis()
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
22
Veleuilite u Rijeci
23
Veleuilite u Rijeci
Primjer: Vozila
razliita vozila (npr. automobili, autobusi i
kamioni) predstavljaju objekte iz razliitih
klasa s jednom osnovnom klasom koju
nasljeuju (vozilo)
zadana struktura podataka (ovdje vezana
lista) sadri objekte iz sve tri klase
da li je mogue prijei cijelu strukturu (ovdje
vezanu listu) pomou istog pokazivaa (npr.
iz klase vozilo)?
ako svaka od klasa koje se odnose na vozila
definira vlastitu metodu za ispis podataka, da
li je mogue preko pokazivaa iz klase vozilo
24
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
pozvati odgovarajuu, tako da se ispiu
Veleuilite u Rijeci
25
Veleuilite u Rijeci
Apstraktna klasa
Apstraktna klasa je klasa iz koje se ne
moe instancirati objekt, nego slui samo kao
osnova za nasljeivanje
da bi klasa bila apstraktna, mora sadravati
barem jednu istu virtualnu metodu
Primjer:
class apstraktna{
public:
int kilometraza,godina;
virtual void unos()=NULL; //iste virtualne metode
virtual void ispis()=NULL;};
pokaziva
na
funkciju
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
dobiva
26
vrijednost
Veleuilite u Rijeci
Primjer:
class apstraktna{
public:
int kilometraza,godina;
virtual void unos()=NULL; //iste virtualne
metode
virtual void ispis()=NULL;};
implementacija
mr.11/12/16
sc. Jasminka Tomljanovi, vii predava
te
funkcije
27