Odgovori na ispitna pitanja iz objektnog orjentisanog programiranja
1-Nastanak i razvoj programskog jezika Java
Java je proizvod kompanije Sun Microsystems
•1991. Preteča Jave namenjena mrežnom kućnom okruženju
•1994. Usmerenje prema Internetu
•1995. Jezik Java lansiran na SunWorld konferenciji:
Netscape pregledači koriste Javu, IBM kupuje licencu i čak i microsoft koristi Javu
•1996. Sun razvija JDK 1.0
•1997. Pojavljuje se JDK 1.1
•1997. Druga konferencija o Javi sa 10‘000 učesnika
•1999. Pojavljuje se J2SE 1.2
•2000. Pojavljuje se J2SE 1.3
•2002. Pojavljuje se J2SE 1.4
•2004. Pojavljuje se J2SE 5.0, interna oznaka 1.5
•2006. Pojavljuje se J2SE 6.0, interna oznaka 1.6
•2006. Veliki deo Jave postaje slobodan i otvoren kod pod GPL licencom
•2010. Java postaje vlasništvo Oracle-a
•2011. Pojavljuje se J2SE 7.0
•2013. Očekuje se pojava J2SE 8.0
Karakteristike programskog jezika Java
1.Jednostavan, objektno orjentisan i familijaran:
Programski jezik Java mora da:
•bude objektno orjentisan od samog početka
•omogući programerima pristup bibliotekama testiranih objekata
•po sintaksi bude sličan C/C++
2.Robustan i siguran
Programski jezik Java mora da:
•omogući kreiranje veoma pouzdanog softvera
•model upravljanja memorijom će biti jednostavan - neće biti pokazivačkih tipova, niti pokazivačke aritmetike
•sigurnosne karakteristike ugrađene u jezik i u sistem za izvršavanje omogućuju da aplikacije budu sigurne od
spoljašnjeg upada neautorizovanog koda
3.Arhitektonski neutralan i prenosiv „piši jednom, izvršavaj bilo gde“
Programski jezik Java mora da:
•podrži aplikacije koje će se isporučivati u raznovrsnim mrežnim okruženjima
•sadrži kompajler koji prevodi do nivoa bajt-koda
•striktno definiše osnovni jezik, veličine prostih tipova i ponašanje aritmetičkih operacija
•na svakoj platformi se program isto izvršava
4.Daje dobre performanse pri izvršavanju
Programski jezik Java mora da:
•pri izvršavanju programa interpretator radi punom brzinom
•pri izvršavanju programa će se koristiti automatski sakupljač otpadaka
•aplikacije se mogu redizajnirati tako da sekcije sa intenzivnim računanjem budu pisane u mašinskom kodu i
povezane sa Java platformom
5.Interpretirana, višenitna i dinamični
Programski jezik Java mora da:
•sadrži interpretator koji može direktno izvršavati bajt-kod na bilo kom računaru
•podržava višenitno izvršavanje
Mogućnosti programskog jezika Java
Tipovi Java aplikacija:
•aplikacije sa grafičkim korisničkim interfejsom
•aplikacije iz komandne linije
•aplikacije za mobilne uređaje
•apleti - veb programiranje na klijentskoj strani
•servleti i Java serverske strane – veb programiranje na serverskoj strani
•veb servisi – takođe programiranje na serverskoj strani
•biblioteke klasa
Java aplikacije sa grafičkim korisničkim interfejsom
•Java može biti korišćena za razvoj portabilnih GUI aplikacija na svim podržanim platformama.
•Tri verzije OS sadrže isti bajt kod, koji je preveden samo jednom pod windows-om i prosto prekopiran na
Solaris bez nove kompilacije i izvrsava se bez problema.
•Postoji veći broj biblioteka koje olakšavaju programiranje GUI u Javi – najpopularnije su AWT, Swing i Java FX.
Java aplikacije iz komandne linije
•Razlika između aplikacija iz komandne linije i aplikacija sa grafičkim korisničkim interfejsom je u tome što ove
prve ne koriste funkcionalnosti biblioteka za rad sa GUI-em koje su obezbeđene uz Javu.
•Koristimo javac za kompajliranje koda i java za izvrsavanje koda iz komandne linije.
Java aplikacije za mobilne uređaje
Ove aplikacije koriste funkcionalnosti biblioteka za programiranje mobilnih uređaja koje se isporučuju uz Javu.
Poslednjih godina se u Java svetu orjentišu prema Java FX programiranju mobilnih uređaja, čime su
obezbeđene bolje performanse i veća fleksibilnost pri promeni platforme. Java FX je kompletno okruženje za
razvoj aplikacija na mobilnim (i na svim drugim) uređajima.
Java apleti
Java apleti predstavljaju primer tzv. veb programiranja na klijentskoj strani. Znaci sa HTML-om se salje java
aplet koji ce se izvrsavati na klijentskoj strani.
Servleti i Java serverske strane
Java omogućuje da se pri radu sa podacima preko Interneta, izvršavanje programa ne realizuje samo na
klijentskoj strani, već i na serverskoj strani (tj. da se na veb serveru izvršavaju naredbe, da te naredbe
“naprave” HTML i da se taj čisti HTML šalje klijentu). Takva vrsta programiranja zove se programiranje na
serverskoj strani.

Java virtuelna mašina
•Jezgro Jave je JVM (Java Virtual Machine). JVM je virtualni računar koji postoji samo u memoriji.
•JVM dopušta da Java programi budu izvršavani na raznovrsnim platformama.
•JVM je glavni razlog prenosivosti Jave
•JVM je vrlo mala kada se implementira u RAM-u. Takva mala veličina JVM omogućava da se Java koristi u
raznovrsnim elektronskim uređajima.
Arhitektura JVM odslikava arhitekturu konkretnog računarskog sistema. JVM izvršava bajt-kod. Pre toga,
program javac, tj. Java prevodilac, procesira .java datoteke i rezultujući bajt-kod čuva u datoteci sa
ekstenzijom .class. JVM čita tok bajt-kod iz .class datoteke kao sekvencu mašinskih instrukcija. Izvršavanje
instrukcija bajt-koda oponaša izvršavanje mašinskih instrukcija. Svaka od instrukcija JVM se sastoji od
jednobajtnog opkod-a, koji predstavlja specifičnu i prepoznatljivu komandu od nula ili više operanada. Opkod
govori šta JVM treba da uradi. Ako JVM zahteva operande za izvršenje operacije, tada operandi slede
neposredno iza opkod-a. Prilikom svog rada, JVM ima interakciju sa bibliotekama Java klasa.
JVM sadrži: sistem za učitavanje klasa, podsistem za izvršavanje,
oblast za podatke
prilikom izvršavanja,
sakupljač otpadaka i Java niti.
Oblast za podatke
prilikom izvršavanja se sastoji od sledećih elemenata: oblast za
Java metode, prostor (heap), Java stek, registri i stek za nativne metode.
•Memorija kod JVM:
Adresna dužina kod JVM je 32 bita, pa JVM može adresirati do 4 Gb memorije. Java metod ne može biti duži od
32 Kb.
•Java registri:
Svi procesori koriste registre. Svaki registar kod JVM je dužine 32 bita, pa može čuvati jednu 32-bitnu adresu.
JVM koristi sledeće registre za upravljanje sistemskim stekom:
>brojač (counter). Vodi računa gde se stalo sa izvršavanjem programa.
>vrh (optop). Pokazivač na vrh steka operanada.
>okvir (frame). Pokazivač na tekuće okruženje pri izvršavanju.
>promenljive (vars). Pokazivač na prvu lokalnu promenljivu u tekućem okruženju izvršavanja.
Tim koji je razvijao Javu odlučio je da koristi samo četiri registra, jer kad bi Java imala više registara od
procesora, onda bi imao jako veliko usporenje performansi.
•Java stek:
>Stek na kom se smeštaju parametri se nalazi u okviru JVM memorije.
>Stek radi po principu «last-in, first-out», ili LIFO. Stek je širok 32 bita
>Na vrh steka pokazuje registar optop.
>Registar okvir pokazuje gde se metod izvršava.
>Registar promenljive ukazuje na prvu promenljivu na steku.
•Prostor i prikupljanje otpadaka
Prostor (heap) je deo memorije iz koga se vrši instanciranje i alokacija objekta. Kad god se alocira memorija sa
operatorom new, ta memorija dolazi iz prostora. Okruženje u kom se Java program izvršava čuva informacije o
referencama na svaki objekt iz prostora i automatski oslobađa onaj deo memorije koji su zauzeli objekti na koje
niko više ne referiše. Skupljač otpadaka radi kao pozadinska nit i vrši raščišćavanje tokom neaktivnosti
procesora.
Alati za Java razvoj (JDK)
Razlog velike popularnosti jezika Java je, pored kvaliteta njenog dizajna je i činjenica da je uz Javu priključen
(kao JDK) i bogat skup alata, kao i skup biblioteka koji je organizovan u pakete. Ovi već oformljeni objekti
omogućavaju brz start pri radu sa Javom, iz dva razloga: programer ne mora ponovo da razvija njihovu
funkcionalnost i izvorni kod je svima dostupan.
Java API
•Java API(
Java Application Programming Interface
), je skup klasa koje je razvio Sun, za korišćenje u jeziku Java.
Java API je dizajniran da bi se pomoglo programeru u razvoju sopstvenih klasa, apleta i aplikacija.
•Klase unutar Java API-ja su grupisane u pakete, pri čemu svaki paket može sadržavati više klasa i interfejsa.
Nadalje, svaka od klasa može imati više osobina (properties), više polja (fields) i(ili) metoda.
Iako je moguće programirati u Javi bez velikog znanja API-ja, treba naglasiti da svaka novorazvijena klasa zavisi
od bar jedne klase iz API-ja. Kratak pregled najznačajnijih paketa koji dolaze sa Javom:
• AWT(
Abstract Window Toolkit
), Swing i Java FX klase za GUI
•Klase za mreže, URL-ove, klijent-serverske sokete.
•Klase za različite tipove ulaza i izlaza.
•Klase za različite tipove podataka, procese i niti koji se izvršavaju, stringove, itd.
•Pomoćne klase za datume, kolekcije itd.
•Klase za razvoj apleta.
•Klase za manipulaciju slikama.
Paketi predstavljaju način za organizovanje klasa. Paket može sadržavati klase i druge pakete, na sličan način
kao što direktorijum sadrži datoteke i druge direktorijume. Obično se obezbedi 1-1 preslikavanje između klasa i
paketa (sa jedne strane) i datoteka i direktorijuma (sa druge strane).
Java Core API
Centralni (core) API sadrži pakete sa objektima za koje se garantuje da su dostupni bez obzira na Java
implementaciju:
•java.lang:
Paket java.lang se sastoji od klasa koje su centralne za jezik Java. On obezbeđuje ne samo klase-omotače za
proste tipove podataka, kao što su Character i Integer, već i obradu grešaka uz korišćenje klasa Throwable i
Error.
•java.io:
Paket java.io služi kao standardna ulazno/izlazna Java biblioteka. Ovaj paket obezbeđuje programeru
mogućnost kreiranja i rada sa tokovima (streams) podataka.
•java.util:
Paket java.util sadrži veći broj korisnih klasa koje nisu mogle biti uklopljene u druge pakete. Među takvim
klasama su:
>klase koje omogućavaju rad sa datumima,
>klase koje omogućavaju strukturisanje podataka, kao što su Stack i Vector.
>klase koje omogućavaju parsiranje ulaznog toka podataka
•java.net:
Paket java.net čini jezik Java mrežno zasnovanim jezikom. On obezbeđuje sposobnost komunikacije sa
udaljenim čvorovima, bilo preko soketa, bilo korišćenjem URL-ova.
•javax.swing:
Swing je uveden kako bi se prevazišli problemi na koje su nailazili programeri koji su koristili AWT za kreiranje
GUI aplikacija.
•java.awt:
Naziv paketa java.awt je označava skraćenicu za Abstract Window Toolkit (AWT).
•java.applet:
Paket java.applet je najmanji paket u API-ju, ali je često korišćen zbog klase Applet koja je definisana u njemu.
Klasa Applet sadrži mnogo korisnih metoda i ona je temeljna za sve aplete.
Non-core Java API
Nekoliko API-ja koji se nalaze van centralnog API -ja, a koji se takođe često koriste:
•Enterprise API
•Commerce API
•Server API
•Media API
•Security API
•Beans API
•Embedded API

kreiranje objekata, tj opisuje strukturu objekta.
•Primerak (instanca) klase - konkretan objekat date klase. U Javi je svaki objekat primerak neke klase, a objekti
postoje samo tokom izvršavanja programa.
Objekat je potpuno određen svojim atributima i ponašanjem.
Klasom je definisan tip objekta, a za svaki objekat primerak(instancu), instancna promenljiva ima konkretnu
vrednost atributa.
Primeri:
tacka (x,y, boja)
automobil(broj_sasije, broj_motora, boja, broj_sedišta)
Ponašanje objekta određeno je metodima u klasi koji mogu dejstvovati na taj objekat.
Primeri:
Vrati x-koordinatu tačke, pomeri tačku za dx, za dy,...
Pokreni vozilo, promeni brzinu, skreni levo, zaustavi...
•Klasa B je potklasa (klasa potomak) klase A ako su svi primerci klase B istovremeno i primerci klase A. Za klasu
A kažemo da je natklasa (roditeljska klasa) klase B.
•Potklase predstavljaju dalju konkretizaciju natklase. One nastaju dodavanjem novih svojstava (atributa i/ili
metoda) ili modifikovanjem postojećih svojstava natklase.
•Ako je neki objekat primerak klase B, onda je on istovremeno i primerak njene natklase A.
Nasleđivanje - mehanizam za kreiranje novih klasa iz postojećih. Nasleđivanjem se formiraju relacije između
klasa.
•Nasleđivanje opisuje odnos «jeste». Na primer, «Student jeste Čovek».
•Pored nasleđivanja, bitan odnos među klasama je i sadržavanje – kada objekat jedne klase kao svoj deo sadrži
objekat druge klase.
•Sadržavanje opisuje odnos «je deo od» ako se posmatra sa pozicije objekta-dela, osnosno «sadrži» ako se
posmatra sa pozicije objekta-sadržaoca. Na primer, «Motor je deo od Auto», «Auto sadrži Motor».
•Polimorfizam - Mogućnost primene istog metoda (operatora) na primerke različitih klasa.
Primeri nasleđivanja
Prilikom projektovanja programa uočavaju se veze između pojedinih klasa i način povezivanja tih klasa sa
drugim klasama. Već su opisani sadržavanje i nasleđivanje, a u ovom primeru je akcenat na nasleđivanju,
preciznije na hijerarhiji nasleđivanja. Višestruko nasleđivanje nije podržano u Java-jeziku, ali jeste u jeziku C++.
Zašto je objektno-orijentisan koncept doživeo veliki uspeh?
Ovaj materijal je namenjen za učenje i pripremu, ne za predaju.
Slični dokumenti