Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 12

APSTRAKTNE KLASE I INTERFEJS U JAVI

Bojan Vasiljevic : SI 40/22


OSNOVNI PRINCIPI OOP

Apstrakcija Enkapsulacija

Nasleđivanje Polimorfizam
Apstrakcija

• Apstrakcija je proces skrivanja detalja implementacije i pokazivanja korisniku


samo funkcionalnosti.

• Drugim riječima, korisniku se pokazuju samo važne stvari, a unutrašnji detalji


ostaju skriveni. Napr. pri slanju sms-a, mi samo kucamo tekst i šaljemo poruku.
Nije nam poznato interno procesiranje vezano za slanje poruke.

• Apstrakcija nam dopušta da se fokusiramo na to što objekt radi umjesto na


kako to radi.
Apstraktne klase

• Klasa koja je deklarisana kao apstraktna naziva se apstraktna klasa. Ona mora biti
naslijeđena i njen metod implementiran. Ona ne može biti instancirana.
• Apstraktna klasa je neka vrsta fantomske klase. Ona može prosljeđivati metode i
varijable, ali sama nikada ne može biti instancirana, tj. nije moguće kreirati objekt
apstraktne klase.
• U tom smislu, apstraktna klasa je poput interfejsa, ali za razliku od njega ona može
sadržavati metode koji nisu apstraktni. Takođe može sadržavati deklaracije podataka koji
nisu konstante.
• Svaka klasa koja sadrži jedan ili više apstraktnih metoda mora biti deklarisana kao
apstraktna. U apstraktnim klasama (za razliku od interfejsa) modifikator abstract mora biti
primijenjen na svaki apstraktni metod.
Apstraktne klase

• Apstraktne klase se ponašaju kao „držači mjesta“ (placeholderi) u hijerarhiji


klasa.
• Na primjer, apstraktna klasa može sadržavati djelimičnu deskripciju koju
nasljeđuju svi njeni potomci u hijerarhiji klasa. Njena djeca,
koja su mnogo određenija, popunjavaju praznine.
• Apstraktni metod nikada ne može biti static
• Važno je zapamtiti da apstraktne metode ne smeju biti privatne (private), jer u
tom slučaju neće biti nasleđene, pa se ne mogu predefinisati u izvedenim
klasama.
Apstraktne klase

• Apstraktna klasa je klasa koja je deklarisana ključnom reči abstract i ne može da


kreira svoje objekte.
• Potreba za apstraktnom klasom proizilazi iz potrebe za kreiranjem apstraktnih
metoda, koje omogućavaju korišćenje prednosti polimorfizma.
• Za potrebe pojašnjavanja ovog koncepta može se razmotriti primer gde bi bazna
klasa bila klasa Povrs i njenje polimorfne metode obim() i povrsina(), a izvedene
klase Krug i Pravougaonik.
Interfejs u javi

• Interfejsi (engl. interfaces) u programskom jeziku Java predstavljaju mehanizam


za postizanje potpune apstrakcije.
• Kada je potrebno specificirati zajednička svojstva povezanih klasa, ali i
nepovezanih klasa koristi se interfejs.
• To je zapravo kolekcija apstraktnih metoda i konstanti, a u većini slučajeva,
sadrži samo metode. Kako se za metode podrazumeva da su public i abstract, pa
se ove ključne reči ne navode.
• Metode u interfejsu ne mogu biti statičke.
Interfejs u javi

• Interfejs se definiše kao klasa, ali koristeći ključnu reč – interface


• Interfejs se može posmatrati i kao jedna specifična klasa u jeziku Java. Svaki
interfejs, pri kompajliranju, se pretvara u posebnu datoteku sa bajtkodom. Može
se koristiti kao tip podataka za referencu promenljive.
• Kao i apstraktna klasa, interfejs ne može da ima svoj objekat.
• Interfejs se koristi tako što ga implementira neke klasa, pomoću ključne reči -
implements.
Interfejs u javi
• Svaka metoda deklarisana u interfejsu mora imati definiciju unutar klase da bi bilo moguće
kreirati konkretne objekte te klase.
• Važno je zapamtiti nekoliko pravila kojih se treba pridržavati u radu sa interfejsima.
- Metode koje se definišu unutar klase koja implementira interfejs moraju biti javne (public).
- Ukoliko se ne definiše bar jedna metoda u klasi koja implementira interfejs, ta klasa
postaje apstraktna.
- Klasa može implementirati više interfejsa.
- Interfejs može da nasleđuje interfejs (nasleđivanje).
- Interfejs može da nasleđuje više interfejsa (višestruko nasleđivanje).
Literatura

• https://www.researchgate.net/profile/Sinisa-Vlajic/publication/303858064_Osno
vni_koncepti_Jave_-_Projektovanje_softvera/links/5758b0aa08ae414b8e3f5fdc/
Osnovni-koncepti-Jave-Projektovanje-softvera.pdf
• http://elibrary.matf.bg.ac.rs/bitstream/handle/123456789/4514/masRadosavljevic
Jovana.pdf?sequence=1
• https://www.znanje.org/knjige/computer/java/ib01/300Java/31000290.htm

You might also like