You are on page 1of 11

Objektno

orijentirano
programiranje
5. Apstraktne klase i sučelja
Apstrakcija
• proces skrivanja detalja implementacije i pokazivanja
korisniku samo funkcionalnosti.

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


umjesto na kako to radi.

• Postoje dva načina za postizanje apstrakcije u javi


o Apstraktna klasa (0 do 100%)
o Sučelje (eng. interface)(100%)
Apstraktne klase (1)
• Klasa koja je definirana sa ključnom riječi abstract
• može imati apstraktne i ne-apstraktne metode
• ne može biti instancirana tj. nije moguće kreirati objekt
apstraktne klase
• mora biti naslijeđena i njene metode ako su apstraktne moraju
biti implementirane
• Svaka klasa koja sadrži jednu ili više apstraktnih metoda mora
biti deklarirana kao apstraktna
• modifikator abstract mora biti primijenjen na svaku
apstraktnu metodu.
Apstraktne klase (2)
Zašto bismo imali apstraktan razred?
• Zato što možemo imati „zajednički nazivnik” za konkretne
artikle

• apstraktni razred može imati metode koje su zajedničke za


više artikala ili čak za sve vrste artikala.

• public abstract String getTipArtikla();


• Klasa Artikl koja mora biti apstraktna
Apstraktne klase (3)
• Svaka klasa koji nasljeđuje roditeljsku klasu će imati svoju
verziju metode getTipArtikla().

• kad pozovemo apstraktnu metodu?


o polimorfizam => metoda je virtualna, poziva se konkretna implementacija

• Apstraktni razredi mogu imati konstruktore, ali se ne može


direktno stvoriti primjerak s:
new NazivApstraktneKlase()
o Konstruktor biva pozvan prilikom stvaranja objekta koji ga nasljeđuje.
Apstraktne metode
• Klasu možemo proglasiti apstraktnim čak i ako nema nijednu
apstraktnu metodu.

• Apstraktne metode nemaju kod


• Iza naziva metode stavljamo ; umjesto koda u vitičastim
zagradama
public abstract String getTipArtikla ();
Sučelja (eng. interface) (1)
• Specifikacija metoda koje klasa mora imati naziva se sučelje i
ne modelira kao klasa (class), već kao sučelje (interface)
• klase se nasljeđuju, sučelja se implementiraju.

• Sučelje može naslijediti neko drugo sučelje.

• U Javi sva sučelja počinju slovom I (nije obveza, već praksa).

• Klase u Javi mogu naslijediti samo jednu klasu, ali mogu


implementirati više sučelja.
Sučelja (eng. interface) (2)
Definicija:
public interface IPrimjerSucelja{
//deklaracija svih metoda
//metode se samo navode, nemaju tijelo
}
Sučelja (eng. interface) (3)
• mehanizam za postizanje potpune apstrakcije

• Ako klasa nasljeđuje klasu koja već implementira neko


sučelje, onda je automatski to sučelje implementirano i u
podrazredima.

• Sučelje može naslijediti drugo sučelje.

• Sučelje može imati članske varijable. Definira se kao obična


varijabla, ali smatraju se statičkim i finalnim
• Sljedeće predavanje :
6. Iznimke

• Info: hrvoje.radovan@aspira.hr

You might also like