You are on page 1of 20

Test Development - OOP u programskom

jeziku Java

Katedra za informatiku FTN, Novi Sad


Septembar, 2017.
Outline

Enkapsulacija

Klase

Interfejsi

Objekti

Polimorfizam

1
Enkapsulacija
Šta je enkapsulacija?

U objektnom programiranju enkapsulacijom se naziva mehanizam


programskog jezika koji obezbeđuje:

• Kontrolisan pristup komponentama objekta (njegovim poljima


i metodama).
• Lakši i jasniji pristup podacima koje nosi objekat korišćenjem
metoda.

Podaci koje nosi objekat su obmotani slojem koji kontroliše njihovo


korišćenje.

2
Klase
Šta je to i čemu služi?

Klase predstavljaju osnovnu jedinicu konstrukcije objektno


orijentisanih programa.
Obično služe da enkapsuliraju neki entitet iz domena problema ili iz
domena implementacije.

• Klasama iz domena problema se daju imena koja ukazuju na


entitete čije ponašanje enkapsuliraju: User, Student,
IspitniRok, Fakultet. . .
• Klasama iz domena implementacije se daju imena koja ukazuju
na entitete koji nam pomažu da nešto napravimo —
isprogramiramo: ArrayList, HashMap, HTTPSession,
Application, StudentController. . .

3
Nasleđivanje klasa

Mehanizam kojim uspostavljamo hierarhiju klasa.

Obratite pažnju na propagaciju nasleđenih osobina 4


Nasleđivanje klasa - jednostruko nasleđivanje

Svaka klasa može naslediti najviše jednu drugu klasu.

5
Nasleđivanje klasa - višestruko nasleđivanje

U programskom jeziku Java nema višestrukog nasleđivanja.

Višestruko nasleđivanje je kada svaka klasa može da nasledi više od jedne druge
klase. 6
Interfejsi
Šta su interfejsi

Još jedan koncept u OOP izgrađen na enkapsulaciji.


• Primer iz svakodnevice:
Godina je 2005.
Vaša mikrotalasna pećnica ima jasan interfejs koji se sastoji od
tastera za podešavanje temperature na kome imate skalu u
stepenima Celzijusa i tastera za podešavanje vremena na kome
imate podeoke u minutima.
• Da li možete iskoristiti mikrotalasnu pećnicu da pokažete
Vašim prijateljima fotografije sa putovanja?
Ne. Mikrotalasna pećnica nema port u koji se može priključiti
Vaš USB na kome su fotografije. Mikrotalasna pećnica nema
interfejs koji vam je za to potreban.

Kada neka klasa implementira neki jasan interfejs ne postoji šansa


da objekat te klase iskoristite na pogrešan način.
7
Interfejsi u Javi

Interfejsi u programskom jeziku java predstavljaju kolekciju metoda.


Klase koje implementiraju interfejs moraju da preklope te metode te
tako jasno definišu svoje ponašanje pri tim akcijama.

public interface Runable {


public void run();
public String signIt(Integer signingOrder);
public ArrayList<String> runnedTasks();
public ArrayList<Connection> getUtilizedConnections();
}

8
Implementiranje interfejsa u Javi

Implementacija interfejsa je mehanizam programskog jezika kojim


se iskazuje da svi objekti neke klase poštuju/implementiraju neki
skup metoda deklarisanih u nekom interfejsu.

public class TestRunner implements Runable {


...
@Override
public void run() {...}
@Override
public String signIt(Integer signingOrder) {return ...;}
@Override
public ArrayList<String> runnedTasks() {return ...;}
@Override
public ArrayList<Connection> getUtilizedConnections() {return ...;}
}

9
Objekti
Objekti u Javi

• Objekti u Javi predstavljaju konkretne instance klasa.


• Proces pravljenja konkretnog objekta na osnovu neke kalse se
zove instanciranje.

Instanciranje objekata vrši se korišćenjem ključne reči new.

Page stranica1 = new Page(0, "Registracija",


"Ovo je stranica za registraciju",
"Testiranje softvera 2016");

Pri instanciranju objekata se rezerviše deo memorije na heapu i


dodeljuje se novokreiranom objektu.

10
Životni ciklus objekata u Java programskom jeziku

• Objekima nastaju u procesu instanciranja i tada zauzimaju


memoriju.
• Oslobađanje memorije koja je zauzeta objektima nije posao
onoga ko piše Java kod već procesa unutar Java virtuelne
mašine koji se zove garbage collector.
• Garbage collector se uključuje sa vremena na vreme (po
algoritmu) i pokušava da nađe objekte koji više nisu u upotrebi
i potom ih briše - memoriju koju zauzima konkretan objekat
obeležava kao slobodnu.

11
Životni ciklus objekata u Java programskom jeziku

12
Polimorfizam
Najčešći oblik polimorfizma u Javi

Znamo da:

• Više klasa može naslediti jednu klasu (direktno ili indirektno).


• Više klasa može implementirati jedan interfejs.

Znači da objekti različitih klasa mogu ispoljavati slična ponašanja!


To nam omogućuje da ispravno koristimo različite objekte za istu
namenu.

13
Najčešći oblik polimorfizma u Javi

Primer:

ArrayList<Jumper> jumpers = new ArrayList<Jumper>() {{


add(new Kangaroo(240.0));
add(new Kangaroo(247.0));
add(new Kangaroo(280.0));
add(new BasketballPlayer("Isaac", "Hamilton", "UCLA"));
}};

for (Jumper j : jumpers) {


// nije nas briga da li je j kengur ili košarkaš
// mi znamo da može da skoči i to nam je dovoljno
j.jump();
}

14

You might also like