NASLEĐIVANJE i KOMPOZICIJA

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

Ponovna upotreba klasa
 Ponovna upotreba klasa je moguda na dva načina:
• Kompozicija • Nasleđivanje

________________________ © N. Jovanovid, 2010.

2

Kompozicija
 Reference na objekat ved postojede klase se postave unutar nove klase

________________________ © N. Jovanovid, 2010.

3

Primer

________________________ © N. Jovanovid, 2010.

4

 Promenljive prostih tipova se inicijalizuju na podrazumevane vrednosti  Reference na objekte se inicijalizuju na vrednost null  Reference na objekat se mogu inicijalizovati: • Gde se objekat definiše • U konstruktoru klase • Tamo gde se taj objekat upotrebljava ________________________ © N. 5 . 2010. Jovanovid.

6 . 2010. Jovanovid.Inicijalizacija na mestu gde se objekat definiše Inicijalizacija u konstruktoru Inicijalizacija na mestu gde se objekat upotrebljava ________________________ © N.

ne postoji garancija da de objekat biti inicijalizovan pre nego što se pozove ________________________ © N. Naredba u konstruktoru se izvršava pre bilo koje inicijalizacije  Ako se inicijalizacija ne uradi na mestu definicije. 2010. 7 . Jovanovid.

Jovanovid. klasa može da se proširi i da se na taj način dobije podklasa  Klasa koja se proširuje naziva se superklasa  Podklasa nasleđuje sve javne i zaštidene članove superklase.Nasleđivanje  Nasleđivanjem. 8 . 2010.  Kod proširivanja klase moguda su dve vrste nasleđivanja: • Nasleđivanje ugovora ili tipa (ponovno korišdenje interfejsa) • Nasleđivanje implementacije ________________________ © N.

Nasleđivanje ugovora ili tipa  Skup metoda i polja koji su dostupni izvan klase. tako da objekti podklase mogu da se koriste svuda gde se očekuju objekti superklase ________________________ © N. zove se ugovor klase  Nasleđivanjem ugovora ili tipa podklasa stiče tip superklase. 9 . 2010. Jovanovid. zajedno sa opisom očekivanog načina ponašanja tih članova.

10 . Jovanovid.Nasleđivanje implementacije  Nasleđivanjem implementacije podklasa stiče implementaciju superklase u pogledu njenih članova kojima je mogude pristupiti ________________________ © N. 2010.

čime podklasa postaje specijalizovana verzija svoje superklase  Nasleđivanjem se može i samo promeniti implementacija nasleđene metode. Jovanovid.  Svaka klasa implicitno nasleđuje klasu Object ________________________ © N. 11 . da bi bila efikasnija. 2010. Najčešde se nasleđivanjem definiše novo ponašanje podklase.

12 . 2010.Sintaksa nasleđivanja class ImePodklase extends ImeSuperklase{ // Ova klasa preuzima članove i metode superklase… // Definišu se novi članovi i metode } ________________________ © N. Jovanovid.

13 . da bi se omogudilo nasleđivanje. 2010. a sve metode javne  Izvedena klasa može da pristupi i zaštidenim članovima ________________________ © N. Opšte pravilo je. Jovanovid. da sva polja superklase budu privatna.

14 .Primer: klasa Osoba ________________________ © N. 2010. Jovanovid.

 Student ima ime i prezime. Jovanovid. to su članovi deklarisani kao private. tako da može da im se pristupi samo preko odgovarajude javne metode  Time se daje sloboda projektantu klase da promeni detalje implementacije. a da to ne utiče na korisnike ove klase  Ime i prezime je mogude i promeniti pomodu odgovarajudih metoda ________________________ © N. 15 . 2010.

 Identifikacioni broj osobe osobaID je nepromenljiv i zato je deklarisan sa final ________________________ © N. 2010. Jovanovid. 16 .

________________________ © N. Jovanovid. 17 . 2010.

 Nasleđena klas Student: • Ima dva konstruktora za preslikavanje svoje superklase • Nasleđuje metode unesiIme(). unesiPrezime(). brIndeksa() i odsek() ________________________ © N. prezime() i osobaID() • Definiše nove metode unesiOdsek(). ime(). 2010. 18 . Jovanovid.

2010.NasleĎene metode iz klase Osoba Nove metode definisane u klasi Student ________________________ © N. Jovanovid. 19 .

Inicijalizacija superklase  Nasleđivanjem se ne kopira samo interfejs osnovne klase. 2010. ________________________ © N. 20 . pozivanjem konstruktora superklase  Java automatski poziva konstruktor superklase u konstruktoru izvedene klase. Objekat izvedene klase sadrži podobjekat superklase  Neophodno je da taj podobjekat bude propisno inicijalizovan  Ta inicijalizacija se obavlja u konstruktoru. Jovanovid.

Primer ________________________ © N. Jovanovid. 21 . 2010.

2010.Primer  Rezultat primera pokazuje da se konstrukcija obavlja od osnovne ka izvedenoj klasi ________________________ © N. 22 . Jovanovid.

Konstruktor superklase. Jovanovid. I na kraju se izvršava telo konstruktora ________________________ © N. Zatim se inicijalizuju polja. redolsedom kojim su deklarisana 3.Redosled zavisnosti konstruktora  Svaki konstruktor ima tri faze: 1. ima iste tri faze. 2. 23 . takođe. Prvo se poziva eksplicitno ili implicitno konstruktor superklase. 2010.

Jovanovid. 24 . 2010.Primer ________________________ © N.

Dešavanja 0 Polja se postavljaju na podrazumevane vrednosti 1 Poziva se konstruktor dva() 2 Poziva se konstruktor jedan() 3 Poziva se konstruktor Object() 4 Inicijalizacija polja klase Jedan 5 Izvršavanje konstruktora Jedan() 6 Inicijalizacija polja klase Dva jedan dva broj 0 0 0 0 1 1 1 0 0 0 0 0 0 2 0 0 0 0 0 1 1 7 Izvršavanje konstruktora Dva() 1 2 3 ________________________ © N. Jovanovid. 2010. 25 .

da bi se pravilno izvršila inicijalizacija podobjekta superklase. 2010.  U konstruktoru izvedene klase prvo se mora pozvati konstruktor superklase. neophodno je eksplicitno pozvati konstruktor superklase koristedi rezervisanu reč super. ________________________ © N. Jovanovid. Ako superklasa nema podrazumevani konstruktor. 26 .

a različiti broj i/ili tipove argumenata onda se radi o preklapanju metode  Ako metoda podklase ima isto ime i isti broj i tipve argumenata onda se radi o redefinisanju metode ________________________ © N. podklasi je mogude dodati nove članove i ponovo definisati ved postojede članove  Kada metoda podklase ima isto ime. 2010. Jovanovid.Preklapanje i redefinisanje  Prilikom nasleđivanja. 27 .

Primer Redefinisanje metode toString Privatnim članovima superklase se pristupa preko javnih metoda ________________________ © N. 2010. Jovanovid. Članovima klase moguće je pristupiti direktno 28 .

2010. 29 . Jovanovid.Sada je moguće kao argument metode println koristiti objekat klase Student ________________________ © N.

Skrivanje polja  Polja u podklasi ne mogu da se preklapaju. ali mogu da se skrivaju  Ako se u podklasi definiše polje sa istim tipom i imenom kao u superklasi. tada polje u superklasi i dalje postoji ali ne može direktno da mu se pristupi po imenu. Jovanovid. 30 . 2010. nego samo pomodu reference super ________________________ © N.

31 . 2010. Jovanovid.protected  Članovi deklarisani kao protected su privatni što se tiče korisnika klase. ________________________ © N. ali su dostupni u klasi koja nasleđuje datu klasu.

Primer  Polja ime i prezime u klasi Osoba su sada protected ________________________ © N. 2010. Jovanovid. 32 .

2010. 33 . Zaštideni članovi superklase su direktno dostupni u podklasi ________________________ © N. Jovanovid.

 Obezbeđivanje novih metoda podklasi nije osnovni cilj nasleđivanja  Nasleđivanje predstavlja relaciju “nova klasa je tipa superklase”  To znači da važi slededa konstatacija: Trougao je GeometrijskoTelo. 2010. 34 . Jovanovid. ako klasa Trougao nasleđuje klasu GeometrijskoTelo  To proizilazi iz činjenice da se interfejs superklase nasleđuje u podklasi ________________________ © N.

Jovanovid. 35 . 2010.Svođenje naviše  Ta konverzija iz reference podklase u referencu nadklase naziva se svođenje naviše (upcasting)  Svođenje naviše je bezbedno jer se sa specifičnijeg tipa vrada na opšti GeometrijskoTelo Trougao ________________________ © N.

final  Ako se prosti tip deklariše kao final. referenca postaje konstantna i ne može da bude promenjena i da ukazuje na drugi objekat. ali objekat na koji ukazuje finalna nreferenca mogude je menjati ________________________ © N. imade konstantnu nepromenljivu vrednost  Kada se final koristi uz referencu na objekat. 2010. 36 . Jovanovid.

Jovanovid.final  Metoda deklarisana kao final ne može se redefinisatu u podklasi Nije moguće redefinisati metodu pokazi ________________________ © N. 37 . 2010.

2010. 38 . Sve metode klase final su takođe final  Finalnu metodu ne može da redefiniše niko.final  Klasa obeležena kao final ne može se nasleđivati drugom klasom. pa to povedava bezbednost  Npr: • Deklarisanjem metode validatePassword() kao final osiguravamo da ova metoda radi ono što treba da radi ________________________ © N. Jovanovid.

39 . 2010. pa je svaka privatna metoda posredno i finalna  Međutim. ne može da se redefiniše (pravi se nova metoda koja nema veze sa metodom u superklasi). pa joj je mogude pristupiti u podklasi. a privatnoj metodi superklase nije mogude pristupiti u podklasi ________________________ © N. finalna metoda superklase može biti protected.final i private  Privatna metoda. Jovanovid. takođe.

2010. ali neka ponašanja su opravdana samo za određene objekte datog tipa- ________________________ © N. 40 .Apstraktne klase i metode  Apstraktne klase omogudavaju definisanje samo dela neke implementacije. a ostatak implementacije se definiše u nasleđenoj klasi  Apstraktne klase su odgovarajude kada se deo ponašanja definiše za vedinu ili sve objekte datog tipa. Jovanovid.

 Svaka klasa sa nekom abstract metodom mora da se deklariše kao abstract  Apstraktne klase se prave kada želimo da sa grupom klasa radimo sa zajedničkim interfejsom ________________________ © N. a svaka metoda u klasi koja nije implementirana se takođe označava kao abstract. 2010. Jovanovid. 41 .Apstraktne klase  Apstraktna klasa se deklariše kao abstract.

 Nije mogude napraviti objekat apstraktne klase  Nasleđena klasa mora da implementira sve apstraktne metode abstraktne klase ili de i nasleđena klasa biti apstraktna ________________________ © N. Jovanovid. 42 . 2010.

Jovanovid. 2010. 43 .Primer ________________________ © N.

Sign up to vote on this title
UsefulNot useful