Programiranje u javi usmeni ispit.pdf
Document Details
Uploaded by IrreproachableDaisy
Tags
Related
- Java Programming Lesson Notes
- Computer Operator & Programming Assistant Year 1 JAVA S1.pdf
- Java Language Presentation PDF
- Introduction to Java Programming and Data Structures (2019) by Y. Daniel Liang - PDF
- Java Programming in JAVA (CSE2006) PDF
- University of Zambia CSC 2000 Computer Programming Past Paper PDF 2021
Full Transcript
Programiranje u javi – pitanja i odgovori 1. Objasniti značenje pojma WORA. Pojam WORA predstavlja „Write Once , run anywhere“, to znači da programer može razviti program u jednom sustavu i očekivati da radi na bilo koljem drugom sustavu koji ima javu. To je moguće zbog JA...
Programiranje u javi – pitanja i odgovori 1. Objasniti značenje pojma WORA. Pojam WORA predstavlja „Write Once , run anywhere“, to znači da programer može razviti program u jednom sustavu i očekivati da radi na bilo koljem drugom sustavu koji ima javu. To je moguće zbog JAVA virtual machine. 2. Objasniti razliku između JRE i JDK. JRE - (Java Virtual Environment) predstavlja podskup Java platforme koji korisnicima nudi mogučnost pokretanja prevedenih programa. JDK – (Software develpment kit) predstavlja nadskup opisane platforme. On u sebi uključuje JRE i donosi još implementaciju prevodioca i drugih pomoćnih alata. 3. Objasniti razliku između strukturnog i objektno orijentiranog programiranja. Kod strukturnog programiranja, programi se dijele u manje programe ili funkcije, imamo strogu hijerarhijsku strukturu, odvajamo definicije od podataka. Kod objektno-orjentiranog programiranja koriste se objekti koji sadrže podatke u obliku atributa i kod u obliku procedura koje zovemo metode.Koriste se klase koje opisuju grupe objekata sa sličnim svojstvima 4. Navesti vrste komentara (primjer) // tekst – prevodioc ignorira sve što je između // 5. Navesti podjelu tipova podataka. Napisati primjer. Tipove dijelimo na primitivne i referentne Imamo 8 primitivnih : Numerički : int , byte , short , long , float , double , char Istinitost : boolean Reference : String , klasa i redovi 6. Navesti minimalno tri posebna znaka. Napisati primjer za svaki. \n – novi red \t - tab \s - razmak 7. Objasniti automatsku konverziju tipova podataka. Napisati primjer. Događa se u slučajevima kada su tipovi između kojih se radi konverzija međusobno kompatibilni. Opseg odredišnog tipa mora biti veći od opsega polaznog tipa Byte → Int : oba tipa služe za čuvanje cjelobrojnih vrijednosti 8. Objasniti eksplicitnu konverziju tipova podataka. Napisati primjer. Događa se u slučajevim kada tipovi nisu međusobno kompatibilni Double → Int (nisu kompatibilni ni po tipu ni opsegu) Prilikom takve konverzije dolazi do gubitka podataka (skraćivanje) 9. Objasniti prava pristupa. Napisati primjere. Prava pristupa se određuju elementima neke klase. Oni određuju gdje su dostupne varijable, polja, konstruktori i klas. PRIVATE – razina pristupa dostupna samo unutar klase Public class Klasa{ Private long varijabla =1; } PUBLIC – kompletan kod može pristupiti klasi, varijabli, konstruktoru, metodi bez obzira gdje god se nalazi public class Klasa1{ public long varijabla_v = 1; } public class Klasa2 extends Klasa1{ public long f(){ return this.time; }} PROTECTED- pruža iste mogućnosti kao i paketni pristup uz dodatak da podklase mogu pristupiti podklasama i varijablama roditeljske klase čak i u slučaju kad se ne nalazeistom paketu DEFAULTNI – ukoliko se prilikom deklariranja ne navede pristupni modifikator dodjeljuje se paketni pristupni modifikator. Pristup je moguć unutar klase i svima u istom paketu 10. Navesti naredbe za uvjetno izvođenje. IF , IF ELSE, SWITCH , WHILE , CONTINUE I BRAKE 11. Nabrojati aritmetičke operatore. Napisati primjer za svaki. 12. Nabrojati relacijske operatore. Napisati primjer za svaki. 13. Nabrojati bitwise operatore. Napisati primjer za svaki. 14. Objasniti uvjetni operator. Napisati primjer. Sastoji se od 3 operanda – koristi se za odluku koja vjerojatnost trebsa biti dodjeljena varijabli. Varijabla v = (izraz)? true:false 15. Navesti minimalno tri metode klase String. Napisati primjere za svaki. length - vraća duljinu stringa charAt - vraća znak na određenom mjesstu u stringu toUpperCase - pretvara mala u velika slova 16. Objasniti omotače primitivnih tipova. U javi su za sve primitivne tipove definirani omotači (wrappers). Postoje Byte, Short, Integer, Long, Float, Double i Boolean Svaki razred omotač korisnicima nudi funkcionalnost pretvorbe primitivne vrijednosti u string, pretvorbe stringa u primitivnu vrijednost te još niz drugih korisnih metoda 17. Objasniti s primjerom donošenje odluka uz pomoć IF uvjeta. Ako je varijabla1 8, u if uvjetu se ispituje da li je ona manja ili jednaka 10. Ako je uvjet istinit ispisuje se neka poruka , ako nije istinit ništa se ne ispisuje 18. Objasniti s primjerom switch-case. Omogućava izvršavanje više različitih radnji ovisno o odabiru. 19. Objasniti s primjerom rad petlji. int n = 5; int sum = 0; int i; for(i = 0 ; i < n; i++){ sum +=i } System.out.println(„suma prvih 5 brojeva je : „ +sum); Program iterira pomoću for petlje 5 puta, sumira sve zbrojeve u varijalu i ispisuje ih. 20. Objasniti s primjerom continue/break naredbe Brake naredbu koristimo kada želimo da kontrolišemo tijek programa unutar neke petlje. U ovom slučaju kad naiđemo na broj 5 izlazimo iz petlje. Continue naredbu koristimo u while, for ili do while petljama kada želimo preskočiti neku iteraciju. U ovom slučaju preskačemo kad naiđemo na broj 5. 21. Primjer definicije razreda. Objasniti određivanje prava pristupa. public class Osoba { private String ime; private int godine; public Osoba(String ime, int godine) { this.ime = ime; this.godine = godine; } public String getIme() { return ime; } public int getGodine() { return godine; } public void setIme(String ime) { this.ime = ime; } public void setGodine(int godine) { this.godine = godine; } } U ovom prijeru razred „Osoba“ ima privatne varijable ime i godina, konstruktor za inicijalizaciju i javne metode za pristupanje i postavljanje vrijednosti varijablama. Sve varijable su privatne pa su dostupne samo unutar razreda. Metode get omogućuju vanjskom kodu pristup tim privatnim varijablama. Metode set omogućuju vanjskom kodu postavljanje vrijednosti tih privatnih polja. 22. Objasniti prava pristupa unutar razreda. Unutar razreda prava pristupa određuju koji dijelovi razreda(polja,metode,konstruktori) su dostupni samo unutar samog razreda a koji su dostupni izvan razreda. 23. Navesti i objasniti tipove varijabli unutar razreda. LOKALNA VARIJABLA – variijabla koja je deklarirana unutar nekog bloka naredni, može se koristiti samo unutar te metode VARIJABLA INSTANCE – varijabla koja se deklarira unutar klase ali izvan bilo koje metode.Stvaraju se onog trenutka kada se instancira objekt te klase. CLASS/STATIC VARIJABLA – u određenim slučajevimasve instance jedne klase trebaju djeliti određenu varijablu. U tim slučajevima se koriszi static varijabla. 24. Razlika između static i non-static varijable. STATIC NON-STATIC Memorija se zauzima u trenutku Memorija se zauzima u trenutku stvaranja učitavanja klase objekta Zajednička je za sve objekte Specifična za objekte Pristup putem naziva klase Pristup putem objekta 25. Objasniti pojam konstruktora (što je konstruktor, zašto se koristi, tipovi konstruktora). Konstruktor je posebna metoda koja se koristi za kreiranje instance tj. objekta klase i postavljanje vrijednosti za objekte. Konstruktori su slični metoama ali se konstruktori moraju zvati isto kao klasa i nemaju povratni tip. Postoji zadani konstruktor kojeg compiler sam napravi ako ga ne zadamo, nema zadanih parametra i svrha mu je postavljanje varijabli objekata na zadanu vrijednost Parametarski konstruktor na ulazu prima određeni broj argumenata.Glavna svrha mu je postavljanje varijabli na drugačije početne vrijednosti. 26. Objasniti ulogu paketa. Glavni zadatak je grupiranje klasa u jedan modul Postoje ugrađeni i korisnički paketi 27. Objasniti pojam metode (sintaksa,primjer). Metoda predstavlja dio koda koji u sebi sadrži skup naredbi koje izvršavaju neki zadatak. Te metode se izvršavaju samo kad ih se pozove. U metode se može poslati podatak koji se zove argument Svrha metoda je za ponovno iskorištavanje koda kako se ne bi morao pisati više puta. 28. Objasniti varijabilni broj argumenata kod metode. Kako bi metoda mogla primiti varijablini broj argumenata mora se slijediti sljedeća sintaksa:... Prosljeđeni argumenti se tretiraju kao niz argumenata. Varijabilan broj argumenata može koristiti u kombinaciji s uobičajenim argumentima uz napomenu da metoda može primiti maksimalno jedan varijabilni argument i on uvijek mora stajati na kraju liste argumenata. public void funkcija(int prvi, double drugi, int … varijabilni) 29. Koje vrste prijenosa argumenata postoje u Java programsmom jeziku. Navesti primjer. Postoji prosljeđivanje po vrijednosti. public class Primjer { public static void main(String[] args) { int broj = 5; promijeniVrijednost(broj); System.out.println("Vrijednost broja nakon metode: " + broj); // Ispis: 5 } public static void promijeniVrijednost(int broj) { broj = 10; } } 30. Navesti razlike između metode i konstruktora. METODA KONSTRUKTOR Mora imati povratni tip Ne može omati povratni tip Poziva se eksplicitno Poziva se implicitno Ne generiraju se automatski Generira se automatski Naziv može biti proizvoljan Naziv mora biti isti kao i klasa 31. Objasniti garbage-collection. Na koje se načine može obaviti dereferenciranje objekata. Oslobađanje memorije je proces prikupljanja smeća i uništavanje slobodnih objekata. Derefernciranje objekata može se obaviti na više različitih načina: 32. Navesti prednosti i pravila nasljeđivanja (primjer). Prednosti: ušteda vremena, smanjivanje pogrešaka, smanjivenje krivulje učenja Pravila: Podklasa nasljeđuje sve varijable kao i metode nadklase, a koje su deklariranje kao public ili protected bez obzira na izvorišni paket. Podklase nasljeđuju sve varijable kao i metode nadklase, a koje nemaju deklariran identifikator pristupa(paketni pristup) pod uvjetom da se nalaze u istom paketu. Podklasa ne može nasljediti private varijable Podklasa ne može nasljediti varijablu ili metodu sa istim imenom. Konstruktore nie moguže nasljediti 33. Navesti tipove dozvoljenih i nedozvoljenih tipova nasljeđivanjai u Java programskom jeziku. DOZVOLJENI – Jednostruko,višerazinsko i hijerarhijsko NEDOZVOLJENI – višestruko i hibridno 34. Objasniti upotrebu instanceOf operatora. Napisati primjer. Koristi se za određivanje pripadnosti neke instance određenoj osnovnoj klasi, pod-klasi ili sučelju. Koristi se još kao i operator uspoređivanja, kao rezultat vraća true ili false. 35. Objasniti razliku između statičkog i dinamičkog polimorfizma. Napisati primjer. Statički polimorfizam je preopterećivanje metoda dok je dinamiči nadilaženje metoda. 36. Objasniti ulogu protected pristupnog modifikatora kod nasljeđivanja. Koristimo ga kada želimo dozvoliti pristup nekom članu iz same klase ili iz njenih pod- klasa ali ne iz ostalih klasa. 37. Objasniti način pozivanja konstruktora kod nasljeđivanja. Napisati primjer. Prilikom instanciranja objekta podklase, konstruktor roditeljekse klase mora se izvršiti prvi, a tek nakon toga se izvršava konstruktor podklase. 38. Objasniti razliku između “this” i “super”. Napisati primjer. Ključna riječ “super” uvijek se odnosi na roditeljsku klasu klase u kojoj se koristi, a koristi seu situacijama kao što su: Pozivanje parametarskog konstruktora Pozivanje metoa roditeljske klase Unutar podklase funkcija ključne riječi this može se smatrati suprotnom od ključne riječi super. Npr. Ako postoji metoda koja se nalazi u roditeljskoj klasi i u podklasi super.metoda() odnosi se na roditeljsku klasu dok this.metoda() odnosi na metodu u podklasi 39. Objasniti apstraktne klase (primjer). Apstraktna klasa predstavlja klasu koju je moguće nasljediti ali ne i instancirati objekte. Apstraktna klasa može sadržavati jednu ili više apstraktnih metoda koje su sadržajno prazne. Ključna riječ abstract 40. Objasniti ulogu ugrađene klase Object. Napisati primjer s minimalno jednom metodom. Svaka klasa u javi je podklasa osim jedne. Nakon deklariranja klasa , ukoliko se eksplicitno ne navede da ta klasa nasljeđuje neku od klasa, tada ta klasa postaje nasljdnik klase Object. 41. Objasniti sučelja. Napisati primjer korištenja sučelja kao skladišta podataka. Sučelje predstavlja zamjenu za višestruko nasljeđivanje. Sučelje predstavlja opis onoga što klasa radi ali ne i kako radi. Za korištenje sučelja koristi se ključna riječ implements 42. Navesti razlike između sučelja i apstraktne klase. Apstraktna klasa kao niti sučelje ne dozvoljava instanciranje objekata Apstraktna klasa može sadržavati metode koje nisu apstraktne dok kod sučelja sve metode moraju biti apstraktne Klasa može nasljediti samo jednu apstraktnu klasu koristeći extends dok sučelje može implementirati u neograničenom broju. 43. Objasniti ključnu riječ super. Odnosi se na objekt nadklase Koristi se za pozivanje metode nadklase, pristupanje konstruktora 44. Na primjeru objasniti Scanner klasu. Koristi se ako želimo korisnički unos s tipkovnice pohraniti u polje, varijablu. Import from java.util.Scanner Scanner input = new Scanner(System.in); String userName = unos.nextLine(); 45. Objasniti ulogu klase Arrays. Napisati primjer korištenjem minimalno tri ugrađene funkcije. Skupina static metoda koje omogućavaju lakšu manipulaciju poljima koristeći već ugrađene i maksimalno optimizirane metode(sortiranje,popunjavanje, pretraživanje) 46. Objasniti generičke klase. Napisati primjer. Generičke klase omogućavaju stvaranje generalnih modela uz mogućnost pronalaska grešaka u fazi kompajliranja ujesto u fazi izvršavanja. Dekariramo je jednako kao i običnu klasu uz razliku što pored imena klase dodajemo tip parametrau kutne zagrade kojih može biti jedan ili više odvojeni zarezom(parametrizirane klase).To znali da možemo koristiti bilo koje slovo : 47. Objasniti generičke metode. Napisati primjer. Generičke metode omogućavaju stvaranje generalnih modela uz mogućnost pronalaska grešaka u fazi kompajliranja ujesto u fazi izvršavanja. Definicije generičkih metoda imaju dio tipa parametra (type-parameter section) unutar kutnih zagrada koji prethodi povratnom tipu (npr. ). Tipovi parametara mogu se koristiti za deklariranje povratnog tipa kao i lokalnih varijabli dok naziv definiran u zaglavlju mora ostati isti kroz cijelu metodu. Tip parametra može predstavljati jedino reference, ne i primitivne tipove podataka kao što su int, char, double i drugi. Naziv tipa parametra kroz deklaraciju metode mora biti isti kao i u dijelu tipa parametra u zaglavlju metode. public class GenerickaMetoda { public static void main(String[] args) { // Pozivanje generičke metode s različitim tipovima podataka ispisi("Ovo je string"); ispisi(123); ispisi(45.67); ispisi(true); } // Definicija generičke metode public static void ispisi(T element) { System.out.println(element); } } 48. Objasniti preopretećivanje kod generičkih metoda. Generiče metode je moguće preopteretiti na način da sadrže različite parametre. Generičke metode mogu biti preopterećene i negenričkim metodama 49. Navesti ograničenja generičkih metoda. 50. Napisati podjelu Collection sučelja. Dijeli se na 4 glavna dijela LIST, QUEUE,SET I MAP 51. Na primjeru pokazati upotrebu sučelja List pozivom minimalno tri pripadajuće funkcije. import java.util.ArrayList; import java.util.List; public class ListExample { public static void main(String[] args) { // Kreiramo Listu koristeći ArrayList implementaciju List lista = new ArrayList(); // Dodavanje elemenata u listu lista.add("Jabuka"); lista.add("Banana"); lista.add("Trešnja"); // Ispisivanje elemenata liste System.out.println("Lista nakon dodavanja elemenata: " + lista); // Dohvaćanje elementa iz liste prema indeksu String prviElement = lista.get(0); System.out.println("Prvi element liste: " + prviElement); // Uklanjanje elementa iz liste prema indeksu String uklonjeniElement = lista.remove(1); System.out.println("Uklonjeni element: " + uklonjeniElement); // Ispisivanje liste nakon uklanjanja elementa System.out.println("Lista nakon uklanjanja drugog elementa: " + lista); } } 52. Na primjeru pokazati upotrebu sučelja Queue pozivom minimalno tri pripadajuće funkcije. import java.util.LinkedList; import java.util.Queue; public class QueueExample { public static void main(String[] args) { // Kreiramo Queue koristeći LinkedList implementaciju Queue red = new LinkedList(); // Dodavanje elemenata u red red.add("Prvi"); red.add("Drugi"); red.add("Treći"); // Ispisivanje elemenata reda System.out.println("Red nakon dodavanja elemenata: " + red); // Dohvaćanje prvog elementa iz reda bez uklanjanja String prviElement = red.peek(); System.out.println("Prvi element reda (peek): " + prviElement); // Uklanjanje prvog elementa iz reda String uklonjeniElement = red.remove(); System.out.println("Uklonjeni element (remove): " + uklonjeniElement); // Ispisivanje reda nakon uklanjanja prvog elementa System.out.println("Red nakon uklanjanja prvog elementa: " + red); } } 53. Na primjeru pokazati upotrebu sučelja Set pozivom minimalno tri pripadajuće funkcije. import java.util.HashSet; import java.util.Set; public class SetExample { public static void main(String[] args) { // Kreiramo Set koristeći HashSet implementaciju Set skup = new HashSet(); // Dodavanje elemenata u set skup.add("Jabuka"); skup.add("Banana"); skup.add("Trešnja"); // Pokušaj dodavanja duplikata boolean jeDodano = skup.add("Banana"); System.out.println("Pokušaj dodavanja 'Banana' ponovno: " + jeDodano); // Ispisivanje elemenata skupa System.out.println("Skup nakon dodavanja elemenata: " + skup); // Provjera da li skup sadrži određeni element boolean sadrziJabuku = skup.contains("Jabuka"); System.out.println("Da li skup sadrži 'Jabuka': " + sadrziJabuku); // Uklanjanje elementa iz skupa boolean jeUklonjeno = skup.remove("Trešnja"); System.out.println("Pokušaj uklanjanja 'Trešnja': " + jeUklonjeno); // Ispisivanje skupa nakon uklanjanja elementa System.out.println("Skup nakon uklanjanja 'Trešnja': " + skup); } } 54. Na primjeru pokazati upotrebu sučelja Map pozivom minimalno tri pripadajuće funkcije. import java.util.HashMap; import java.util.Map; public class MapExample { public static void main(String[] args) { // Kreiramo Map koristeći HashMap implementaciju Map mapa = new HashMap(); // Dodavanje parova ključ-vrijednost u mapu mapa.put("Jabuka", 10); mapa.put("Banana", 20); mapa.put("Trešnja", 30); // Ispisivanje elemenata mape System.out.println("Mapa nakon dodavanja elemenata: " + mapa); // Dohvaćanje vrijednosti prema ključu Integer brojJabuka = mapa.get("Jabuka"); System.out.println("Broj jabuka: " + brojJabuka); // Uklanjanje para ključ-vrijednost iz mape Integer uklonjenaVrijednost = mapa.remove("Banana"); System.out.println("Uklonjena vrijednost za ključ 'Banana': " + uklonjenaVrijednost); // Ispisivanje mape nakon uklanjanja elementa System.out.println("Mapa nakon uklanjanja 'Banana': " + mapa); } } 55. Na primjeru objasniti ulogu klase Collections. Klasa Collections u Javi je korisna klasa koja pruža razne statičke metode za rad s kolekcijama (npr. liste, setovi, mape). Ova klasa omogućava manipulaciju i operacije nad kolekcijama koje nisu dostupne direktno na samim kolekcijama. import java.util.ArrayList; import java.util.Collections; import java.util.List; public class CollectionsExample { public static void main(String[] args) { List brojevi = new ArrayList(); brojevi.add(5); brojevi.add(2); brojevi.add(8); brojevi.add(1); System.out.println("Lista prije sortiranja: " + brojevi); Collections.sort(brojevi); System.out.println("Lista nakon sortiranja: " + brojevi); } } 56. Objasniti ulogu java.io paketa. Standardni input, output i error stream Omogućava spremanje podataka u datoteke. 57. Navesti koji se stream objekti (i što oni omogućavaju) stvaraju nakon pokretanja Java programa. System.in - standardni input stream objekt koji omogućava ulaz byte-ova s tipkovnice. System.out - standardni output stream objekt koji omogućava ispis znakova na zaslon System.err - standardni error stream objekt koji omogućava ispis znakovno temeljenih poruka vezanih za nastale greške na zaslon. 58. Objasniti binarni način rada s datotekom. Napisati primjer. U binarnom načinu rada podaci se prenose kao bajtovi (onako kako su zapisani u memoriji). InputStream i OutputStream klase odnose se na rad sa binarnim tokovima dok su sve ostale klase namijenjene za drugu upotrebu (npr. rad sa datotekama) nasljednici tih klasa 59. Objasniti znakovni način rada s datotekom. Napisati primjer. Znakovni tokovi koriste se kod čitanja ili pisanja znakovnih zapisa iz ili u datoteku. U java.io paketu nalaze se klase Reader i Writer. 60. Objasniti korištenje spremnika kod rada s datotekama. Buffering predstavlja metodu poboljšanja perfomansi I/O operacija. Korištenjem BufferedOutputStream (podklasa klase FilterOutputStream) pojedinačna naredba za upis ne mora nužno rezultirati fizičkim prijenosom podataka → preusmjeravanje u spremnike (buffer-e). → spremnik se implicitno/eksplicitno prazni nakon što se napuni. 61. Objasniti ulogu klase File. Napisati primjer. Klasa File u Javi koristi se za rad s datotekama i direktorijima na lokalnom fajl sistemu. Ova klasa omogućava kreiranje, brisanje, preimenovanje, provjeru postojanja i mnoge druge operacije nad datotekama i direktorijima. 62. Na jednostavnom primjeru objasniti ulogu serijalizacije. 63. U kojem obliku se spremaju podatci u datoteku koristeći klasu Properties. Properties objekt predstavlja postojanu Hash tablicu u koju se spremaju key/value parovi stringova. Za manipuliranje podataka koristi se metode setProperty i getProperty 64. Navesti podjelu iznimaka. Objasniti razliku. Iznimke se dijele na dvije glavne klase. Klasu Exception i klasu Error. Error klasa i njezine podklase predstavljaju iznimke koje moemo ispraviti u programu, odnosno to su greške koju su se dogodile zbog primjerice lošek hardvera ili zbog greške unutar virtualnog stroja. Kad se dogodi takva greška program će se prekinuti. Exception klasa ili njezine podklase predstavljaju iznimke čiji se uzorci mogu otkloniti u programu, tj mogu se riješiti programskim putem. 65. Objasniti ulogu finally bloka. Iako koristimo try-catch blok za hvatanje iznimaka sav kod koji se nalazi ispod mjesta gdje je nastala iznimka neće se izvršiti. U nekim slučajevima to neće predstavljati nikakav poseban problem, međutim, možda se u tom dijelu koda trebaju osloboditi ranije zauzeti resursi što onda predstavlja jednu vrstu curenja memorije. Finally blok predstavlja blok koji će se svakako izvršiti nakon završetka try-catch bloka. 66. Objasniti AutoCloseable sučelje, kada se koristi. Alternativa za finally blok. try-with-resource blok - omogućava zauzimanje jednog ili više resursa koji će se koristiti unutar try bloka te se nakon izvršavanja automatski zatvoriti. 68. Navesti i objasniti stanja u kojima se može pronaći nit. New – nova nit započinje životni vijek te ostaje u tom stanju dok se program ne pokrene Runnable – stanje nakon pokretanja niti, nit obavlja svoj zadatak. Waiting – stanje u kojoj nit čeka neku drugu nit da završi sa izvođenjem. Timed waiting – Nit iz runnable stanja može prijeći u Timed waiting stanje na određeni interval vremena. Blocked – Nit iz stanja runnable prelazi u stanje blocked kada pokušava izvršiti zadatak koji se ne može izvršiti odmah nego se mora privremeno pričekati do završetka. Terminated - Nit prelazi u terminated stanje nakon što uspješno izvrši zadatak ili u slučaju nastanka greške. 69. Objasniti razliku između implementacije niti korištenjem Thread klase i Runnable sučelja. Runnable sučelje definira metodu run() u koju se treba implementirati kod kojeg želimo da nit izvrši Klasa Thread sama po sebi također implementira Runnable sučelje 70. Navesti i na primjeru prikazati korištenje minimalno tri metode klase Thread. Start Sleep Join 71. Objasniti i na primjeru pokazati join() metodu. 72. Objasniti sinkronizaciju niti. U situacijama kada više niti dijeli isti objekt tada se treba posebno posvetiti načinu na koji se obrađuju podaci problem se rješava na način da se dodjeli ekskluzivno pravo pristupa samo jednoj niti u isto vrijeme dok druge niti čekaju na izvršavanje (sinkronizacija). 73. Navesti tri načina izrade sučelja. 74. Navesti hijerarhiju spremnika za izradu sučelja. Klasa jFrame je spremnik najviše razine, definira osnovni prozor aplikacije. Klasa jPanel je spremnik srednje razine, čija je jedina uloga pojednostavljenje pozicioniranja elementarnih komponenti Elementarne komponente (Jbutton, JLabel) ne koriste se za pohranjivanje ostalih komponenti neko daju funkcionalnost 75. Objasniti pojam layout manager-a. Napisati primjere koristeći minimalno tri različita layout manager-a. Layout manager u Java Swingu je odgovoran za raspored komponenti unutar kontejnera (npr. JFrame, JPanel). Layout manageri omogućavaju dinamičko pozicioniranje komponenti na osnovu određenih pravila ili prilagođavanje veličine komponenti u skladu sa promenama veličine kontejnera. 76. Koja su tri segmenta programskog kod-a potrebna za obradu događaja u grafičkom sučelju. 77. Navesti minimalno tri vrste događaja (opisati događaj). 78. Objasniti pojam anonimne klase. Napisati primjer. Anonimna klasa u Javi je klasa koja se definiše i istovremeno instancira bez eksplicitnog davanja imena klase. Ove klase koriste se kada je potrebno definisati implementaciju interfejsa ili nasleđivanje neke klase, ali nije potrebno eksplicitno definisati posebnu klasu za to. 79. Navesti ograničenja anonimne klase. Nije dozvoljeno korištenje ključne riječi static Nije dozvoljeno definirati konstruktor. 80. Što nam omogućava java.net paket. Pruža nam podršku za razvoj mrežnih aplikacija u javi 81. Objasniti Java socket. Java socket je mehanizam koji omogućava komunikaciju između dva računara putem mreže. To je endpoint za komunikaciju između dva procesa, jedan na lokalnom računaru, a drugi na udaljenom računaru. Socket se koristi za uspostavljanje veze, slanje i primanje podataka između klijenta i servera ili između dva računara. 82. Navesti korake koji su potrebni za implementaciju poslužitelja (socketi). Korak 1 - stvaranje ServerSocket objekta Korak 2 - čekanje na konekciju Korak 3 - dohvaćanje I/O toka Korak 4 – procesiranje Korak 5 - zatvaranje konekcije 83. Navesti korake koji su potrebni za implementaciju klijenta (socketi).