POLIMORFIZAM

Dr Nenad Jovanovid FTN, 2010. godina
________________________ © N. Jovanovid, 2010. 1

 Enkapsulacija odvaja interfejs od realizacije tako što detalje proglašava privatnim  Polimorfizam razdvaja klase po tipovima  Polimorfizam omogudava da se objekat tretira kao objakat specifičnog tipa ili kao objekat opšteg tipa  To je veoma važno jer omogudava da se mnogo tipova posmatra i obrađuje kao da su jedan tip
________________________ © N. Jovanovid, 2010.

2

 Polimorfno ponašanje poziva metode omogudava da jedan tip izrazi svoju različitost. Jovanovid. 3 . 2010. koja se ispoljava u ponašanju metode koja može da bude pozvana preko osnovne klase ________________________ © N.

Primer ________________________ © N. Jovanovid. 2010. 4 .

kao i referencu na objekat svake klase izvedene iz klase GeomObjekat ________________________ © N. 5 .Primer  Metoda povrsina() prihvata kao argument referencu na objekat klase GeomObjekat. Jovanovid. 2010.

..Zanemarivanje tipa  Možda izgleda logičnije da se kao argument u metodi povrsina() koristi referenca na objkat klase Krug. pravougaonik. 6 . Jovanovid. 2010. odnosno referenca na objekat Pravougaonik  U tom slučaju bi trebalo da preklopimo metodu povrsina() i napisemo posebno metode za svaki geometrijski objekat (krug.) ________________________ © N.

ali ima veliku manu: za svaki objekat mora da se napiše posebna metoda ________________________ © N. 7 . 2010. Jovanovid. Ovaj pristup daje željeni rezultat.

2010. odnosno povezivanje poziva metode i tela metode se obavlja u toku izvršavanja programa. Polimorfizam omogudava da se napiše samo jedna metoda koja se obrada osnovnoj klasi  To je mogude jer se pozivi metoda obavljaju putem kasnog vezivanja. Jovanovid. 8 . u zavisnosti od tipa objekta ________________________ © N.

2010.Primer ________________________ © N. Jovanovid. 9 .

10 . 2010. Jovanovid.  Statička metoda izaberi() vrada referencu na slučajno izabran geometrijski objekat ________________________ © N. Osnovna klasa GeomObjekat definiše zajednički interfejs za sve objekte nasleđenih klasa  Izvedene klase redefinišu ove metode da bi obezbedile ponašanje za specifične objekte.

pa se referenca na krug ili pravougaonik pretvara u referencu na GeomObjekat. 2010. Jovanovid. 11 . čiji su elementi objekti klase GeomObjkat. odnosno izvršava se operacija specifičnog a ne osnovnog tipa ________________________ © N. i pozove metoda povrsina za svaki objekat. Pri svakoj naredbi return obavlja se svođenje naviše. pa se kao povratna vrednost dobija referenca na objekat klase GeomObjekat  Kada se iterativno prođe kroz niz g. svaki tip počinje da se pravilno ponaša.

jer mu je mogude dodati nove funkcionalnosti  Metode koje obavljaju posao putem interfejsa osnovne klase. nije potrebno menjati jer one mogu da rade i sa objektima novih klasa. Jovanovid. koje nasleđuju osnovnu klasu ________________________ © N. 2010. bez potrebe da se menja metoda povrsina()  Polimorfizam omogudava proširivost. 12 . Polimorfizam omogudava da se doda proizvoljno geometrijskih objekata.

Dinamičko razrešavanje  Osnov za redefinisanje metoda jeste dinamičko razrešavanje metoda  Dinamičko razrešavanje je mehanizam pomodu koga se poziv upuden redefinisanoj metodi razrešava u trenutku izvršavanja  Dinamičko razrešavanje metoda je osnov na kome se zasniva polimorfizam ________________________ © N. 2010. 13 . Jovanovid.

Jovanovid. ________________________ © N. prevodilac de prijaviti grešku. prevodilac de automatski da pozove podrazumevani konstruktor  Ako takvog konstruktora nema. 14 . 2010.Konstruktori i polimorfizam  Konstruktori nisu polimorfni  U konstruktoru podklase uvek se poziva konstruktor nadklase  Samo konstruktor osnovne klase ima prava pristupa i sposobnost da inicijalizuje elemente osnovne klase  Ako se u telu izvedene klase izričito ne pozove konstruktor superklase.

Ovaj poziv se vrši rekurzivno. tako da se prvo konstruiše koren. 15 . pa prva izvedena klasa i tako dok se ne dođe do poslednje izvedene klase  Inicijalizuju se članovi po redosledu deklarisanja  Izvršava se telo konstruktora podklase ________________________ © N. Jovanovid.Redosled pozivanja konstruktora  Poziva se konstruktor nadklase. 2010.

2010. 16 . Jovanovid.Primer ________________________ © N.

Primer 1. 2010. Prvo se poziva konstruktor osnovne klase. Poziva se telo konstrutora izvedene klase ________________________ © N. 17 . pa se rekurzivno pozivaju konstruktori izvedenih klasa 2. Jovanovid. Inicijalizuju se članovi po redosledu deklarisanja 3.

Jovanovid. ako se pozove metoda izvedene klase. bide pozvana redefinisana verzija te metode  Efekat može biti neočekivan. poziva se metoda čiji članovi možda još uvek nisu inicijalizovani pa može dodi do problema ________________________ © N.Polimorfne metode u konstruktoru  Ako se polimorfna metoda pozove iz konstruktora. 18 . naime. 2010.

2010. Jovanovid.Polimorfne metode u konstruktoru ________________________ © N. 19 .

pa se izvršava telo konstruktora ________________________ © N. Prvo se poziva konstruktor osnovne klase. On poziva redefenisanu metodu crtaj.? 1. Kako u tom trenutku još nije inicijalizovan r rezultat je 0. Nakon toga se pozivaju inicijalizatori članova. 2. 2010. 20 . Jovanovid.

2010. Jovanovid.Projektovanje klasa  Nasleđivanje namede uvođenje hijerarhije kao i potrebu poznavanja tipa pri prevođenju  Kompozicija je fleksibilna i omogudava da se tip odabere dinamički  Nasuprot tome prilikom nasleđivanja nije mogude birati šta de biti nasleđeno  Nasleđivanje se primenjuje da bi se izrazile razlike u ponašanju  Kompozicija se primenjuje da bi se izrazila promena stanja ________________________ © N. 21 .

2010.Primer ________________________ © N. Jovanovid. 22 .

23 . 2010.Primer  Objakst Suma sadrži referencu na klasu Biljka koja je inicijalizovana objektom klase Drvo. Jovanovid.  To određuje ponašanje metode raste() ________________________ © N.

Jovanovid. pa se ponašanje metode raste menja. tako da pokazuje na objekat klase Zbun.  Imamo dinamičku fleksibilnost pri izvršavanju ________________________ © N. referenca može da bude promenjena dinamički. prilikom izvršavanja. 24 .Dinamička promena reference  Međutim. 2010.

Master your semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master your semester with Scribd & The New York Times

Cancel anytime.