Professional Documents
Culture Documents
09 Nasledjivanje
09 Nasledjivanje
programiranje:
Nasleivanje
Nasleivanje
Nasleivanje omoguuje novoj klasi da nasledi
Nasleivanje
Najvanija prednost nasleivanja jeste u tome to
Nasleivanje
Izvoenje klase
Dostupnost lanova osnovne klase unutar izvedene
protected
Kada je lan klase oznaen kao protected, on je
privatan, uz jedan izuzetak, kada se klasa nasleuje
Protected lanu osnovne klase moe da se pristupi
iz izvedenih klasa
Protected omoguuje izvoenje lanova, ali tako da
oni ostaju privatni unutar hijerarhije klasa
Kada je klasa izvedena kao public, protected lanovi
osnovne klase ostaju protected i u izvedenoj klasi
Objektno orijentisano programiranje
10
Modifikator protected
11
12
13
Prijatelji klase
Ponekad je potrebno da se klasa projektuje tako da
14
Prijateljske funkcije
Prijateljska funkcija se deklarie unutar deklaracije
15
Prijateljske funkcije
16
Prijateljske funkcije
Koncept prijateljske funkcije nije krenje principa
kapsuliranja podataka
o Deklaracija kojom se neka funkcija proglaava
prijateljskom moe se nai iskljuivo unutar
deklaracije klase, tj. deo je interfejsa same klase
Prijateljstvo se poklanja, jer je projektant klase taj
koji dozvoljava pristup privatnim lanovima te klase
Prijateljstvo se ne otima, jer nema naina da se
izvan deklaracije klase neka funkcija proglasi
prijateljem
Objektno orijentisano programiranje
17
Prijateljske klase
Ako je potrebno da sve funkcije lanice neke klase
Y budu prijateljske funkcije klasi X, onda se klasa Y
deklarie kao prijateljska klasa (friend class) klase
X:
Prijateljstvo se ne nasleuje
Prijateljstvo nije tranzitivna relacija
Objektno orijentisano programiranje
18
Konstruktori i destruktori
Izvedene klase nasleuju sve funkcije lanice
19
Konstruktori i destruktori
Konstruktor osnovne klase prvo kreira osnovni
podobjekat, pa zatim konstruktor izvedene klase
kreira izvedeni deo objekta
o
20
Konstruktori i destruktori
21
Viestruko nasleivanje
Klasa moe da nasledi nekoliko osnovnih klasa;
tada svaki objekat izvedene klase nasleuje sve
lanove svih svojih osnovnih klasa
o
22
23
24
Virtuelne funkcije
Osnova za polimorfizam u jeziku C++ su
25
Virtuelne funkcije
Na prvi pogled, ini se da je nadjaavanje virtuelne
funkcije u izvedenoj klasi specijalan oblik
preklapanja funkcija (overloading), ali nije tako!
o
26
Polimorfizam
Klasa koja sadri virtuelnu funkciju zove se
polimorfna klasa
ta se deava kada se za poziv virtuelne funkcije
koristi pokaziva na objekat osnovne klase?
C++ odreuje koju e (nadjaanu) virtuelnu funkciju
pozvati na osnovu tipa objekta na koji pokazuje
pokaziva, a ne na osnovu tipa pokazivaa
Ova odluka donosi se tokom izvravanja programa
i zato se zove dinamiko vezivanje (dynamic binding)
Objektno orijentisano programiranje
27
Polimorfizam
28
Polimorfizam
Polimorfizam je svojstvo da svaki objekat izvedene
29
Polimorfizam
Polimorfizam omoguuje razdvajanje interfejsa i
implementacije
o
o
30
Apstraktne klase
ista virtuelna funkcija je ona koja nema definiciju
31
Virtuelni destruktor
Konstruktor je funkcija koja od obine gomile u
32
Virtuelni destruktor
Virtuelni mehanizam, tj.dinamiko vezivanje tano
33
Virtuelni destruktor
34
35
typeid
typeid vraa referencu na objekat tipa type_info
36
typeid
37
typeid
38