Presentation is loading. Please wait.

Presentation is loading. Please wait.

Glava 9 Polimorfizam.

Similar presentations


Presentation on theme: "Glava 9 Polimorfizam."— Presentation transcript:

1 Glava 9 Polimorfizam

2 Polimorfizam Polimorfizam je objektno-orijentisan koncept koji nam dozvoljava kreiranje fleksibilnog dizajna softvera Glava 9 se fokusira na: Definisanje polimorfizma i njegovih prednosti Koristenje nasljedjivanja za kreiranje polimorfnih referenci Koristenje interfejsa za kreiranje polimorfnih referenci Koristenje polimorfizma za implementaciju algoritama sortiranja i pretrazivanja Dodatne komponente GUI © 2004 Pearson Addison-Wesley. All rights reserved

3 Pregled Polimorfne reference Polimorfizam preko nasljedjivanja
Polimorfizam preko interfejsa Sortiranje Pretrazivanje Ponovo o obradi dogadjaja Izbor fajla i izbor boje Slajderi © 2004 Pearson Addison-Wesley. All rights reserved

4 Vezivanje (Binding) Razmotrimo poziv slijedece metode: obj.doIt();
U nekom momentu, ovaj poziv se povezuje sa definicijom metode koju poziva Ako se ovo povezivanje desava u vrijeme kompajliranja, tada ova linija koda zove istu metodu svaki put Ipak, Java odlaze povezivanje metode do vremena izvodjenja (run time) – ovo se naziva dinamicko povezivanje ili kasno povezivanje Kasno povezivanje daje fleksibilnost u dizajniranju programa © 2004 Pearson Addison-Wesley. All rights reserved

5 Polimorfizam Termin polimorfizam bukvalno znaci “imati vise formi"
Polimorfna referenca je varijabla koja moze referisati na vise raznih tipova objekata u raznim trenucima Metoda koja se poziva preko polimorfne reference moze se mijenjati od jednog do drugog poziva Sve reference objekata u Javi su potencijalno polimorfne © 2004 Pearson Addison-Wesley. All rights reserved

6 Polimorfizam Pretpostavimo da kreiramo slijedecu referentnu varijablu:
Occupation job; Java dozvoljava ovoj referenci da pokazuje na objekat tipa Occupation, ili na bilo koji objekat bilo kog kompatibilnog tipa Ova kompatibilnost moze biti ustanovljena koristenjem nasljedjivanja ili koristenjem interfejsa Pazljivo koristenje polimorfnih referenci moze rezultirati elegantnim, cvrstim dizajnima softvera © 2004 Pearson Addison-Wesley. All rights reserved

7 Pregled Polimorfne reference Polimorfizam preko nasljedjivanja
Polimorfizam preko interfejsa Sortiranje Pretrazivanje Ponovo o obradi dogadjaja Izbor fajla i izbor boje Slajderi © 2004 Pearson Addison-Wesley. All rights reserved

8 Reference i nasljedjivanje
Referenca na objekt moze referisati na neki objekat njene klase, ili na neki objekat klase sa kojom je povezana preko nasljedjivanja Na primjer, ako se klasa Holiday koristi za izvodjenje klase zvane Christmas, tada bi neka referenca na Holiday mogla biti koristena za pokazivanje na objekat tipa Christmas Holiday Christmas Holiday day; day = new Christmas(); © 2004 Pearson Addison-Wesley. All rights reserved

9 Reference i interfejs Dodjeljivanje objekta tipa dijete referenci na roditelja smatra se konverzijom prosirenja i moze biti ostvareno preko proste dodjele Dodjeljivanje objekta tipa roditelj referenci na dijete takodje moze biti dato, ali se ovo smatra konverzijom suzenja i mora biti izvedeno sa ukalupljenjem (cast) Konverzija prosirenja je najkorisnija © 2004 Pearson Addison-Wesley. All rights reserved

10 Polimorfizam preko nasljedjivanja
Tip referenciranog objekta, a ne tip reference, odredjuju koja metoda ce biti pozvana Pretpostavimo da klasa Holiday ima metodu zvanu celebrate, a da je klasa Christmas nadjacava Posmatrajmo slijedeci poziv: day.celebrate(); Ako day referise na objekat Holiday, on poziva Holiday verziju celebrate; ako on referise na objekat tipa Christmas, on poziva Christmas version © 2004 Pearson Addison-Wesley. All rights reserved

11 Polimorfizam preko nasljedjivanja
Razmotrimo slijedecu hijerarhiju klasa: StaffMember Executive Hourly Volunteer Employee © 2004 Pearson Addison-Wesley. All rights reserved

12 Polimorfizam preko nasljedjivanja
Pogledajmo sada primjer u kojem placamo skup raznih zaposlenih koristeci polimorfne metode Vidi Firm.java (strana 486) Vidi Staff.java (strana 487) Vidi StaffMember.java (strana 489) Vidi Volunteer.java (strana 491) Vidi Employee.java (strana 492) Vidi Executive.java (strana 493) Vidi Hourly.java (strana 494) © 2004 Pearson Addison-Wesley. All rights reserved

13 Pregled Polimorfne reference Polimorpfisam preko nasljedjivanja
Polimorfizam preko interfejsa Sortiranje Pretrazivanje Ponovo o obradi dogadjaja Izbor fajla i izbor boje Slajderi © 2004 Pearson Addison-Wesley. All rights reserved

14 Polimorfizam preko interfejsa
Ime interfejsa moze se koristiti kao tip objekta referentne varijable Speaker current; Referenca current moze se koristiti za pokazivanje na bilo koji objekat bilo koje klase koji implementira interfejs Speaker Verzija speak koju poziva slijedeca linija zavisi od tipa objekta koji je referisan preko current current.speak(); © 2004 Pearson Addison-Wesley. All rights reserved

15 Polimorfizam preko interfejsa
Pretpostavimo da dvije klase, Philosopher i Dog, obje implementiraju inteerfejs Speaker, uvodeci razlicite verzije metode speak U slijedecem kodu, prvi poziv speak zove jednu verziju, a drugi zove drugu: Speaker guest = new Philospher(); guest.speak(); guest = new Dog(); © 2004 Pearson Addison-Wesley. All rights reserved

16 Pregled Polimorfne reference Polimorfizam preko nasljedjivanja
Polimorfizam preko interfejsa Sortiranje Pretrazivanje Ponovo o obradi dogadjaja Izbor fajla i izbor boje Slajderi © 2004 Pearson Addison-Wesley. All rights reserved

17 Sortiranje Sortiranje je proces aranziranja liste podataka u posebnom poretku Proces sortiranja zasniva se na posebnim vrijednostima Sortiranje liste uspjeha u rastucem poretku Sortiranj liste ljudi alfabetski prema prezimenu Postoji vise algoritama, koji se razlikuju po efikasnosti, za sortiranje liste podataka Mi razmatramo dva specificna algoritma: Sort izborom Sort umetanjem © 2004 Pearson Addison-Wesley. All rights reserved

18 Sort izborom Postupak pri sortiranju izborom: Detaljnije:
Izaberi vrijednost i stavi je na njeno konacno mjesto u listi Ponovi za sve preostale vrijednosti Detaljnije: Nadji najmanju vrijednost u listi Razmijeni tu vrijednost sa vrijednoscu na prvoj poziciji Nadji slijedecu najmanju vrijednost u listi Razmijeni tu vrijednost sa vrijednoscu na drugoj poziciji Ponavljati dok sve vrijednosti ne budu na pravim mjestima © 2004 Pearson Addison-Wesley. All rights reserved

19 Sort izborom Jedan primjer:
original: najmanji je 1: najmanji je 2: najmanji je 3: najmanji je 6: Svaki put, nadje se najmanja vrijednost i razmijeni sa elementom u “slijedecoj” poziciji koju treba popuniti © 2004 Pearson Addison-Wesley. All rights reserved

20 Swapping Obrada sortiranja algoritmom izbora ukljucuje swapping dvije vrijednosti Swapping zahtijeva tri komande dodjele i jednu privremenu memorijsku lokaciju: temp = prvi; prvi = drugi; drugi = temp; © 2004 Pearson Addison-Wesley. All rights reserved

21 Polimorfizam u sortiranju
Napomenimo da neka klasa koja implementira interfejs Comparable definise metodu compareTo za odredjivanje relativnog poretka njenih objekata Mi mozemo koristiti polimorfizam za razvoj generickog sorta za svaki skup objekata tipa Comparable Metod sortiranja prihvata kao parametar niz objekata tipa Comparable Na taj nacin, jedna metoda moze biti koristena za sortiranje grupe People, ili Books, ili sta hocemo © 2004 Pearson Addison-Wesley. All rights reserved

22 Sort izborom Za metodu sortiranja nije vazno sta se sortira, ona samo treba mogucnost da zove metodu compareTo To je garantovano koristeci Comparable kao tip parametra Takodje, na ovaj nacin svaka klasa odlucuje za sebe sta znaci a jedan objekat da je manji od drugog Vidi PhoneList.java (strana 500) Vidi Sorting.java (strana 501), posebno selectionSort metodu Vidi Contact.java (strana 503) © 2004 Pearson Addison-Wesley. All rights reserved

23 Sort umetanjem Postupak kod sortiranja umetanjem: Detaljnije:
Uzmimo neki elemenat i stavimo ga na pravo mjesto u sortiranoj podlisti Ponovimo dok svi elementi ne budu uneseni Detaljnije: Posmatrajmo prvi clan koji treba sortirati (podlista od jednog clana) Umetnimo slijedeci clan u sortiranu podlistu, shiftujuci prvi clan kako je potrebno za pravljenje mjesta za nova umetanja Umetnimo treci clan u sortiranu podlistu (od dva clana), shiftujuci clanove ako je potrebno Ponavljamo dok svi clanovi budu umetnuti na pravo mjesto © 2004 Pearson Addison-Wesley. All rights reserved

24 Sort umetanjem Primjer:
original: umetni 9: umetni 6: umetni 1: umetni 2: Vidi Sorting.java (strana 501), posebno insertionSort metodu © 2004 Pearson Addison-Wesley. All rights reserved

25 Poredjenje stringova Algoritmi sortiranja izborom i umetanjem su slicni po efektivnosti Oba imaju spoljasnje petlje koje skeniraju sve elemente, a i unutrasnje petlje koje porede vrijednost iz spoljasnje petlje sa gotovo svim vrijednostima u listi Aproksimativno se pravi n2 poredjenja da bi se sortirala lista duzine n Kaze se da je slozenost ovih sortova reda n2 Neki drugi sortovi su efikasniji: reda n log2 n © 2004 Pearson Addison-Wesley. All rights reserved

26 Pregled Polimorfne reference Polimorfizam preko nasljedjivanja
Polimorfizam preko interfejsa Sortiranje Pretrazivanje Opet o obradi dogadjaja Izbor fajla i izbor boje Slajderi © 2004 Pearson Addison-Wesley. All rights reserved

27 Pretrazivanje Pretrazivanje je proces nalazenja tarzenog elementa u grupi clanova koju zovemo oblast pretrazivanja Trazeni elemenat moze i ne mora biti u listi Mmi zelimo efektivno izvestipretrazivanje, minimizirajuci broj poredjenja Pogledajmo dva klasicna pristupa pretrazivanju: linearno pretrazivanje i binarno pretrazivanje Kao sto smo uradili sa sortiranjem, mi cemo implementirati pretrazivanje sa polimorfnim Comparable parametrima © 2004 Pearson Addison-Wesley. All rights reserved

28 Linearno pretrazivanje
Linearno pretrazivanje pocinje na jednoj strani liste i ispituje elemenat po elemenat Eventualno, trazeni elemenat je nadjen ili se dodje do kraja liste Vidi PhoneList2.java (strana 508) Vidi Searching.java (strana 509), posebno linearSearch metodu © 2004 Pearson Addison-Wesley. All rights reserved

29 Binarno pretrazivanje
Binarno pretrazivanje podrazumijeva sortiranu listu clanova u oblasti pretrazivanja Ono eliminise veliki dio oblasti pretrazivanja u svakom poredjenju Binarno pretrazivanje prvo ispituje srednji elemanat liste – ako on odgovara trazenom, pretrazivaje se zavrsava Ako ne, samo polovinu preostalih elemenata treba pretraziti Posto su oni sortirani, trazeni elemenat moze biti samo u jednoj ili drugoj polovini © 2004 Pearson Addison-Wesley. All rights reserved

30 Binarno pretrazivanje
Proces se nastavlja poredjenjem sa srednjim elementom preostalih kandidata Svako poredjenje eliminise odprilike polovinu preostalih kandidata Eventualno, trazeni elemenat je nadjen ili je lista kandidata iscrpljena Vidi PhoneList2.java (strana 508) Vidi Searching.java (strana 509), posebno binarySearch metodu © 2004 Pearson Addison-Wesley. All rights reserved

31 Pregled Polimorfne reference Polimorfizam preko nasljedjivanja
Polimorfizam preko interfejsa Sortiranje Pretrazivanje Ponovo o obradi dogadjaja Izbor fajla i izbor boje Slajderi © 2004 Pearson Addison-Wesley. All rights reserved

32 Obrada dogadjaja Polimorfizam igra vaznu ulogu u razvoju grafickog korisnickog interfejsa Jave Kao sto smo vidjeli, mi uspostavljamo vezu izmedju komponente i slusaoca: JButton button = new JButton(); button.addActionListener(new MyListener()); Primijetimo da metoda addActionListener prihvata objekat MyListener kao parametar U stvari, mi mozemo proslijediti metodi addActionListener bilo koji objekat koji implementira ActionListener interfejs © 2004 Pearson Addison-Wesley. All rights reserved

33 Obrada dogadjaja Izvorni kod za metodu addActionListener prihvata parametar tipa ActionListener (interfejs) Zbog polimorfizma, svaki objekt koji implementira taj interfejs je kompatibilan sa referentnom varijablom parametra Komponenta moze zvati metodu actionPerformed zbog odnosa izmedju klase slusaoca i interejsa Prosirivanje adapter klase za kreiranje slusaoca predstavlja istu situaciju; adapter klasa vec implementira odgovarajuci interfejs © 2004 Pearson Addison-Wesley. All rights reserved

34 Pregled Polimorfne reference Polimorfizam preko nasljedjivanja
Polimorfizam preko interfejsa Sortiranje Pretrazivaje Ponovo o obradi dogadjaja Izbor fajla i izbor boje Slajderi © 2004 Pearson Addison-Wesley. All rights reserved

35 Okviri za dijalog Podsjetimo da je dijalog boks mali prozor koji "pops up" da bi reagovao sa korisnikom za kratku, odredjenu potrebu Klasa JOptionPane omogucuje jednostavno kreiranje dijalog prozora za predstavljanje informacije, potvrdu akcija, ili prihvatanje ulaznih vrijednosti Pogledajmo sada druge dvije klase koje nam omogucuju kreiranje specijalizovanih okvira zza dijalog © 2004 Pearson Addison-Wesley. All rights reserved

36 Izbor fajla Cesto nailaze situacije u kojima zelimo da korisnik izabere fajl sa disk drajva, obicno da bi njegov sadrzaj mogao biti procitan i obradjen file chooser, predstavljen preko JFileChooser klase, uproscava ovaj proces Korisnik moze pregledati disk i filtrirati tipove pokazanih fajlova Vidi DisplayFile.java (strana 516) © 2004 Pearson Addison-Wesley. All rights reserved

37 Izbor boje U mnogim situacijama mi zelimo omoguciti korisniku izbor boje color chooser , predstavljen preko ColorChooser klase, uproscava ovaj proces Korisnik moze izabrati boju iz palete ili odrediti boju navodeci RGB vrijednosti Vidi DisplayColor.java (strana 519) © 2004 Pearson Addison-Wesley. All rights reserved

38 Pregled Polimorfne reference Polimorfizam preko nasljedjivanja
Polimorfizam preko interfejsa Sortiranje Pretrazivaje Ponovo o obradi dogadjaja Izbor fajla i izbor boje Slajderi © 2004 Pearson Addison-Wesley. All rights reserved

39 Slajderi Slajder je komponenta GUI koja omogucava korisniku da specificira vrijednost u nekom brojnom razmaku Slajder moze biti orijentisan vertikalno ili horizontalno i moze opcionalno imati tik oznake i labele Minimalne i maksimalne vrijednosti slajdera su postavljene koristeci konstruktor JSlider Slajder proizvodi change event kada se slajder pomjera, pokazujuci da su slajder i vrijednost promijenjeni © 2004 Pearson Addison-Wesley. All rights reserved

40 Slajderi Slijedeci primjer koristi tri slajdera da promijeni vrijednosti koje predstavljaju komponente boje njihovim RGB vrijednostima Vidi SlideColor.java (strana 522) Vidi SlideColorPanel.java (strana 523) © 2004 Pearson Addison-Wesley. All rights reserved

41 Zakljucak Glava 9 ima fokus na:
Definisanje polimorfizma i njegovih prednosti Koristenje nasljedjivanja za kreiranje polimorfnih referenci Koristenje interfejsa za kreiranje polimorfnih referenci Koristenje polimorfizma za implementaciju algoritama pretrazivanja i sortiranja Dodatne GUI komponente © 2004 Pearson Addison-Wesley. All rights reserved


Download ppt "Glava 9 Polimorfizam."

Similar presentations


Ads by Google