1 UVOD U PROGRAMSKI JEZIK JAVA

Size: px
Start display at page:

Download "1 UVOD U PROGRAMSKI JEZIK JAVA"

Transcription

1 Dr Dušan T. Malbaški 1 UVOD U PROGRAMSKI JEZIK JAVA 2 java se prvi put pojavila pod imenom Oak godine Prva radna verzija, pod imenom Java, nastala je rešava (stari) problem portabilnosti (prenosivosti), tj. prenošenja programa sa jedne platforme (računara) na drugu 3

2 klasično rešenje problema portabilnosti prenosi se izvorni kod i ponovo prevodi na ciljnoj platformi izvorni program PREVODILAC prevođenje mašinski program klasični postupak prenošenja izvorni program prevodilac 1 prevodilac 2 mašinski program 1 mašinski program 2 4 javino rešenje problema portabilnosti prenosi se prevedeni (tj. "mašinski") kod i na ciljnoj platformi se ne prevodi izvorni program java kompajler prevedeni JVM program JVM "bajt kod" virtuelna mašina 5 ulogu računara kao neposrednog izvršioca programa preuzima program koji se zove virtuelna mašina (Java Virtual Machine, JVM) u ulozi mašinskog programa pojavljuje se tzv. bajt-kod visokooptimizovani prikaz programa koji virtuelna mašina može da "izvrši" virtuelna mašina povezuje se sa stvarnim hardverom prilikom instaliranja virtuelne mašine i ta veza je nevidljiva za program pisan na javi dakle, program "ne vidi" hardver, nego samo JVM. 6

3 Osnovne osobine jave rešava problem portabilnosti izvršnog koda čist objektni jezik (postoje samo bazni tipovi i klase) jako tipiziran jezik izuzetno bogat gotovim klasama pogodan za mrežno programiranje pogodan za konkurentno programiranje programi su relativno sporo izvršavaju, jer ih izvršava JVM 7 java i C ++ nema pokazivača; zamenjeni su tzv. referencama koje podsećaju na dereferencirani pokazivač u C-u izvedeni tipovi, niz i string, realizovani su kao klase nema preklapanja operatora nema pretprocesora slobodni potprogrami su drukčije realizovani nema višestrukog nasleđivanja memorija se oslobađa automatski, te nema destruktora niti operatora delete 8 nema naredbe typedef nema modifikatora dužine i predznaka (unsigned, short, long itd.) nema naredbe goto; naredbe break i continue su pojačane niz izraza dozvoljen samo u naredbi for ima poseban logički tip sa nazivom boolean i vrednostima true i false ima poseban način modularizacije, putem tzv. paketa 9

4 Raspodela memorije pre svega, radi se o virtuelnoj memoriji, a ne o hardverskoj memoriji, te je sloboda kreiranja bila daleko veća! (virtuelna) memorija ima samo dve komponente: stek i hip svi objekti nalaze se na hipu i pristupa im se putem referenci! sami objekti su bezimeni, a imena imaju reference 10 referenca objekat stek hip 11 Elementi jave alfabet se sastoji od uobičajenih grupa simbola: velika i mala slova engleske abecede i znak _ cifre 0 do 9 specijalni znaci * > < + - += -= == << >>> format izvornog koda je slobodan identifikatori sadrže samo slova i cifre, a prvi simbol je slovo naziv klase počinje velikim slovom za promenljive i metode koristi se camel notacija nazivi paketa sadrže samo mala slova nazivi karakterističnih metoda imaju prefikse get set has is 12

5 Komentari java ima tri vrste komentara kraći komentari počinju dvoznakom // duži komentari stavljaju se između dvoznakova /* i */ 13 dokumentacioni komentari u velikoj meri olakšavaju izradu dokumentacije softvera (pre svega klase), bez koje se ne može! dokumentacija je deo izvornog koda i izrađuje se zajedno s njim! najčešće se dokumentuju klasa i njene metode /** dokumentacione direktive */ 14 dokumentacione direktive služe kao uputstva za izradu dokumentacije koja se formira pomoću posebnog programa sa nazivom javadoc opšti oblik dokumentacione propratni tekst 15

6 2 TIPOVI PODATAKA 1 Tipovi podataka su realizovani su tako da postoje samo bazni tipovi i klase drugim rečima, izvedeni tipovi kao što su niz ili string nemaju posebnu realizaciju: realizovani su kao klase 2 logički tip (boolean) Bazni tipovi znakovni tip (char) celobrojni tipovi (int, long, short, byte) realni tipovi (double, float) tip void primenjuje se samo na metode 3

7 logički tip poseban tip, nekompatibilan sa ostalim baznim tipovima identifikator: boolean konstante (literali): false, true namena: upravljanje naredbama if i ciklusima, kao i formiranje logičkih izraza znakovni tip kompatibilan sa ostalim baznim tipovima (izuzev boolean) identifikator: char UNICODE, dužine 16 bita! literali se prikazuju na tri načina: direktno pomoću eskejp sekvenci preko odgovarajućih UNICODE kodova direktno: 'a' 'R' '+' '0' 'x'; izuzeci su znaci \ ' " eskejp sekvence: \n \r \b \t \f \' \" \\ UNICODE: \ooo \uxxxx, gde su ooo tri oktalne cifre, a xxxx četiri heksadecimalne cifre, sve sa vrednošću koda

8 familija celobrojnih tipova sastoji se od četiri tipa: byte: 8 bita, -128 do +127 short: 16 bita, do int: 32 bita, do long: 64 bita, približno do literali: dekadni oblik je isti kao u svim drugim programskim jezicima: Vodeća nula, npr. 0465, nije dozvoljena oktalni prikaz prepoznaje se upravo po vodećoj nuli: 054 ili 023 odn (mogu imati i negativan predznak, ali to nema praktičnog značaja) heksadecimalni prikaz prepoznaje se po prefiksu 0x ili 0X: 0x4a91 0x67AB 0X5CD2. Takođe mogu imati negativan predznak što nije naročito važno kod navođenja, podrazumeva se tip int. Dakle, literal 467 je tipa int. Za long dodaje se sufiks L ili l. Prema tome literali 25634L, 0x89ABCL su tipa long.

9 familija realnih tipova sastoji se od dva tipa: double: 64 bita, do float: 32 bita, do literali se zadaju decimalno: eksponencijalno: 1e10 2.3E-6-7.8e-23 podrazumevani tip literala je double float literali se zadaju sufiksom F ili f: 1.5F -3.2e-6f 1E-8F postoji i sufiks d odn. D za double literale, ali se podrazumeva String literali predstavljaju tekstuelne konstante i koriste se za inicijalizaciju stringova predstavljaju se kao "tekst" na primer, "Petar Petrovic" "ovo je string" mogu da sadrže i eskejp sekvence "\nprelazak u novi red" Literal null odgovara referencama svih vrsta označava da referenca ne pokazuje ni na jedan objekat

10 Promenljive pošto su reference na objekte (skalarne) promenljive sledi da prirodu promenljive imaju polja svih vrsta (baznih tipova ili referenci) u objektima lokalne promenljive svih vrsta u metodama Drugim rečima, sve čime manipulišemo u programu ima prirodu skalarne promenljive! 13 promenljiva se definiše iskazom tip ime 1 [=inicijalizator 1 ],..., ime n [=inicijalizator n ]; gde je tip tip svih promenljivih iz definicije. int a,b,c = 10; char cx = 'x', znak; Inicijalizatori su opcioni i ne moraju biti konstantni izrazi. Sve što se traži je da se vrednost inicijalizatora može izračunati. Na primer, double h = 2*x+y-1; gde x i y moraju imati definisane vrednosti definicije promenljivih u metodama mogu se naći bilo gde u kodu (ali ispred prve primene) Domet identifikatora promenljive domet (opseg, doseg) identifikatora promenljive predstavlja njegovu oblast važenja, tj. deo koda u kojem se taj identifikator može koristiti. Domet polja opredeljen je činjenicom da je polje deo klase, što znači da je u potpunosti dostupno za sve metode klase. Pristup polju iz metoda drugih klasa regulisan je nizom pravila i mehanizama o kojima će biti reči. 15

11 domet lokalne promenljive omeđen je mestom definisanja s jedne i krajem odgovarajućeg bloka s druge strane. Pod blokom podrazumevamo sekvencu naredbi dopunjenu definicijama promenljivih (dakle, i objekata). Raspored naredbi i definicija je proizvoljan. Opšti oblik bloka je { definicije i naredbe 16 blok 1 blok 2 { int a;... int b; { double x = a+b; domet x domet b domet a 17 datoteka: Krug.java public class Krug { private double r;! public Krug(double r) { this.r = r; public double r() { return r; public double obim() { return 2*r*Math.PI; public double povrsina() { return r*r*math.pi; Primer: klasa Krug poklapa se sa imenom klase konstruktor referenca objekta na samog sebe parametar, metoda i polje mogu se poklopiti po imenu metoda 18

12 klasa Krug nalazi se u istoimenoj datoteci Krug.java kompletan sadržaj klase nalazi se u naredbi class kontrola pristupa zadaje se za svaki član ponaosob svaki objekat ima polje this koje je referenca na samog sebe umesto standardnih biblioteka (npr. math.h) postoji standradna klasa (Math) u ulozi glavnog programa pojavljuje se svaka klasa koja ima metodu sa nazivom main program se poziva komandom java klasa sa metodom main 19 glavni program datoteka: TestKrug.java public class TestKrug { public static void main(string args[]) { kreiranje objekta kr Krug kr = new Krug(1); System.out.println("Poluprecnik: "+kr.poluprecnik()); System.out.println("Obim: "+kr.obim()); System.out.println("Povrsina: "+kr.povrsina()); poziv metode 20 priprema programa poziv prevodioca: rezultat je datoteka Krug.class (bajt kod) javac Krug.java //prevodjenje klase Krug javac TestKrug.java //prevodjenje klase TestKrug java TestKrug //aktiviranje programa poziv virtuelne mašine 21

13 aritmetički operatori 3 OPERATORI I IZRAZI + potvrda predznaka - promena predznaka + sabiranje - oduzimanje * množenje / deljenje % moduo ++ inkrement -- dekrement 1 2 relacioni operatori ==!= > >= < <= rezultat je tipa boolean! & konjunkcija disjunkcija! negacija logički operatori ^ ekskluzivna disjunkcija && optimizovana konjunkcija (kao u C-u) optimizovana disjunkcija (kao u C-u) operandi i rezultat su tipa boolean 3 4 bit-operatori & konjunkcija disjunkcija ~ komplement ^ ekskluzivna disjunkcija >> šift udesno (popunjava se bitom predznaka) >>> šift udesno (popunjava se nulama) << šift ulevo operatori dodele osnovni operator dodele: = ostali operatori dodele: += -= *= /= %= &= = ^= >>= >>>= <<= operatori &= = ^= odnose se i na logičke i na bit-operatore. operandi i rezultat su celobrojni 5 6

14 uslovni izraz logički_izraz? izraz_1 : izraz_2 konverzija slično C-u i java dozvoljava mešovite izraze, pri čemu dolazi do konverzije konverzija može biti implicitna (automatska) i eksplicitna (type cast) implicitna konverzija izvodi se prilikom računanja binarnih izraza za operatore dodele važe posebna pravila eksplicitna konverzija vrši se operatorima 7 8 implicitna konverzija običnih binarnih operatora odnosi se na sve međusobno kompatibilne tipove (tj. na sve bazne tipove osim boolean) i na sve binarne operatore osim osnovnog operatora dodele =) prvo se vrži promocija: tipovi byte i short pretvaraju se u int, bez obzira na to da li su operandi različitog tipa potom se vrši konverzija po sekvenci char int long float double ako su oba operanda char rezultat je int! primeri int i,j; double d; float f; byte b1, b2; short s; char c1, c2; d * i //rezultat double i + j //rezultat int f / b1 //rezultat float b1 + b2 //rezultat int! s - b1 //rezultat int c1 + c2 //rezultat int! i += d //moze! rezultat je int 9 10 implicitna konverzija operatora dodele desna strana prilagođava se levoj nije dozvoljena konverzija iz složenijeg u manje složen tip (samo kod osnovnog operatora dodele =)! int = short short = int //ne double = long long = double //ne short = byte byte += int //moze! double *= int //moze eksplicitna konverzija vrši se pomoću operatora kasta (tip) gde je tip ciljni tip. (int) z (short) i ako se konvertuje realni u celobrojni decimale se seku eksplicitna konverzija je naročito važna kod referenci na objekte! 11 12

15 4 NIZ I STRING 1 tip niza tip niza u javi realizovan je kao specijalna klasa, što znači da je svaki niz objekat to dalje znači da se nalazi na hipu i da mu se pristupa putem reference niz je specijalna klasa po tome što se kreira na poseban način ima operaciju indeksiranja poseduje inicijalizator 2 kreiranje niza referenca na niz deklariše se iskazom tip imeniza[] ili tip[] imeniza gde je tip tip svakog elementa. na primer, iskazom int x[] ili int[] x deklariše se referenca na int niz x (ali se niz ne kreira!) niz se stvara posebnom operacijom new koja važi za sve objekte. 3

16 operacijom imeniza = new tip[duzina] na hipu se stvara niz dužine duzina i na njega usmerava prethodno deklarisana referenca imeniza 4 na primer, operacijom x = new int[3] stvara se int niz x dužine 3 x deklarisanje i kreiranje niza može se izvršiti jednom naredbom: tip[] imeniza = new tip[duzina]; int[] x = new int[3]; 5 posebne osobine niza indeksiranje se izvodi kao i u drugim programskim jezicima izrazom imeniza[indeks] gde je indeks celobrojni izraz sa vrednošću 0 <= indeks <= duzina-1 greška! na primer, x[2] x[2*i-j+1] x[j] x[3] za razliku od C/C ++ java proverava probijanje indeksa! 6

17 niz kao objekat uvek ima polje length koje sadrži dužinu niza, tako da se ona ne mora pratiti posebnom promenljivom; vrednost polja length postavlja se pri kreiranju dakle, imeniza.length duzina za naš primer, x.length 3 uočimo da kod javinih nizova nema potrebe za rezervisanjem viška memorijskog prostora: niz zauzima onoliko memorije koliko ima aktuelnih elemenata! 7 niz se može inicijalizovati: tip[] imeniza = {v 1,...,v k ; gde su v 1,...,v k inicijalne vrednosti elemenata na indeksima redom 0,1,..,k-1. Uočimo da se operacija new ne navodi! na primer, double[] y = {1.1, 2.0, -5.6, 0.0; y matrica javina matrica je doslovno niz nizova, preciznije niz referenci na nizove kreiranje: tip[][] imematrice = new tip[v][k]; gde je tip tip elemenata matrice, v broj vrsta i k broj kolona. kao i svaki drugi niz, i matrica se može deklarisati i formirati posebnim naredbama. Tada je deklaracija oblika tip[][] imematrice; 9

18 izgled hipa posle kreiranja matrice int[][] mtr = new int[2][3] mtr 10 indeksiranje matrica se indeksira odgovarajućom operacijom [] koja se može primeniti jedan ili dva puta: int[][] m = new int[5][10];... m[0][3] //pristup elementu u vrsti 0 i koloni 3 m[2] //pristup vrsti 2 dužina se određuje se poljem length m.length //broj vrsta (=5) m[3].length //duzina vrste 3 (=10) 11 inicijalizacija matrica se inicijalizuje kao i svaki drugi niz, uzimajući u obzir da su elementi tog niza takođe nizovi int[][] iniz = {{1, 2, {0, -1, {4, 5; vrsta 0 vrsta 1 vrsta 2 12

19 int[][] m1; m1 = new int[2][]; m1 double[][] m2 = new double[2][]; m2[0] = new double[3]; m2[1] = new double[4]; m2 iniz int iniz = {{1, 2, {0, -1, {4, 5; 13 String po prirodi stvari, string je tekstuelni tip stringovi su važan tip podataka jer mogu da posluže kao univerzalni prenosioci podataka (npr. kao tip argumenata programa) kao i tip niza, tip stringa u javi je realizovan kao specijalna klasa naziv klase je String 14 posebne osobine stringova Postoje string literali koji se mogu koristiti pri inicijalizaciji ili pri prenosu argumenata u metodu ne treba new inicijalizacija: String s = "Ovo je string" mada može i String s = new String("Ovo je string"); prenos argumenta ob.metoda("string literal") literali se ne mogu dodeljivati (z = "abc";) 15

20 konkatenacija nad stringovima je definisan operator konkatenacije (spajanja) + i operator += String a = "xy", b = "zt", c, d = "w"; c = a + b; //c je sada "xyzt" d += c; //d je "wxyzt" zapazimo: posle operacije d+=c stari sadržaj stringa d ostaje na hipu, ali je nedostupan w d wxyzt 16 operator konkatenacije je polimorfan ako je jedan operand string, operacija + se interpretira kao konkatenacija, drugi se automatski prevodi u string double x = 1.5; String tekst = "Vrednost x je ", r; r = tekst + x; //r "Vrednost x je 1.5" drugi operand može biti i objekat, pod uslovom da u njegovoj klasi postoji metoda tostring() (što je uvek slučaj) 17 prenos stringova u metodu string se u metodu prenosi po vrednosti to znači da ako se string-parametar u metodi promeni to neće imati uticaj na original (što nije slučaj sa drugim objektima kada su argumenti metode) razlog: da se omogući prenos string literala kao argumenata, jer oni moraju ostati nepromenjeni 18

21 void poruka(string txt) {... txt += "xxx";... String tekstporuke = "Ovo je poruka"; poruka(tekstporuke); po završetku metode, tekstporuke je i dalje "Ovo je poruka" (a ne "Ovo je porukaxxx") 19 metode klase String Klasa String raspolaže velikim brojem gotovih metoda od kojih izdvajamo samo dve: int length() daje dužinu stringa char charat(int poz) da je znak na poziciji poz u stringu, gde je 0 poz length()-1 20

22 5 NAREDBE 1 Klasifikacija naredbe prosta naredba upravljačke strukture blok selekcije ciklusi naredbe iskoka 2 prosta naredba definisana je kao primeri: x = 1; y = 2*z -3; a += 6; t++; ++t; ; izraz;! 3

23 blok blok je upravljačka struktura koja odgovara sekvenci, dopunjenoj definicijama definicije su potpuno ravnopravne sa naredbama i mogu se sa njima mešati pravilo: svaki identifikator pre prve upotrebe mora biti definisan uključujući i druge blokove opšti oblik bloka: { definicije i naredbe blok se može labelirati 4 { x = 1; y += x; double z = x + y; x *= z; { double t; t = Math.sin(y); y -= 2*t; domet t domet z 5 selekcije iste su kao i u C-u razlika je samo u načinu realizacije logičkog tipa kojim se upravlja naredbama if, jer java ima tip boolean naredba switch se uopšte ne razlikuje od iste naredbe u C-u 6

24 naredbe if if(log_izraz) naredba log_izraz false true naredba if(log_izraz) naredba 1 false log_izraz true else naredba 2 naredba 2 naredba 1 7 naredba switch potpuno ista kao u C-u, uključujući i potrebu primene skoka break 8! celobrojni izraz c 1 c 2 niz_naredbi 1 niz_naredbi 2 default niz_naredbi 0 niz_naredbi k c k switch(celobrojni_izraz) { case c 1 : niz_naredbi 1 case c 2 : niz_naredbi 2... default: niz_naredbi 0... case c k : niz_naredbi k u novijim verzijama može i String! deo default nije obavezan 9

25 i+j=-4 switch(i+j) { case 2: x = 1; y++; case 0: case -4: z*=t; t--; case 6: p = q = r = s = 0; case 1: x++; uloga break switch(i+j) { case 2: x = 1; y++; break; case 0: case -4: z*=t; t--; break; case 6: p = q = r = s = 0; break; case 1: x++; uočiti višestruke case labele i+j=-4 10 ciklusi skoro isti kao i u C-u razlika je ponovo u načinu realizacije logičkog tipa kojim se upravlja naredbama ciklusa, jer java ima tip boolean 11 ciklus while while(log_izraz) naredba false log_izraz naredba true 12

26 ciklus for for(inicijalizacija;uslov;modifikacija) naredba inicijalizacija: izraz 1,...,izraz n uslov: logički izraz modifikacija: izraz inicijalizacija false uslov true naredba modifikacija 13 for(i=0,s=0;i<n;i++) s+=a[i]; u posebnom slučaju, brojačka promenljiva može se definisati unutar ciklusa i tada za domet ima samo taj ciklus for(int j=0;j<m;j++) z-=math.cos(j); j važi samo unutar ciklusa 14 ciklus do-while do naredba while(log_izraz); naredba false log_izraz true 15

27 naredbe iskoka java nema naredbu goto! pošto ostale naredbe nemaju proizvoljno odredište, bolje ih je nazvati "naredbe iskoka" naredbe iskoka su: break continue i return 16 naredba break kao i u C-u, koristi se u dva slučaja: u okviru naredbe switch na uobičajeni način u okviru ciklusa, za momentalni iskok iz ciklusa (tj. za završetak ciklusa) 17 labelirana naredba break naredba break je pojačana varijantom koja koristi labele (razlog: nepostojanje goto) labelirati se mogu svi ciklusi blokovi opšti oblik labelirane naredbe break break labela; gde labela predstavlja labelu ciklusa ili bloka čije se izvršavanje prekida 18

28 nivo1: while(i<n) {... nivo2: while(j>0) {... nivo3: for(k=0;k<m;k++) {... break nivo1;... break nivo2;... break nivo3; //ili samo break; 19 prvi: {... drugi: {... treci: {... break prvi;... break drugi;... break treci; 20 labelirana naredba continue samo kod ciklusa opšti oblik labelirane naredbe continue continue labela; gde labela predstavlja labelu ciklusa na čiju se sledeću iteraciju preskače 21

29 out: while(i!= n) {... while(j<=k) {... continue out;... continue naredba return koristi se u metodama sa identičnim formama kao i kod C-ovih potprograma 23

30 6 ELEMENTARNO RUKOVANJE KLASOM 1 Naredba class naredbom class tadaje se kompletan sadržaj klase koji čine polja, metode i tzv. unutrašnje klase class ImeKlase { //polja //metode //unutrasnje klase gde se oznaka odnosi na skup modifikatora kojima se klasi pridružuju posebne osobine 2 modifikatori modifikatori su službene reči kojima se podešava ponašanje čitave klase, polja, metode ili njenih parametara primeri: public, private, static, abstract, final ideja je ista kao kod C-a, ali je namena drukčija (ne postoje modifikatori dužine ili predznaka) 3

31 polja polja mogu biti baznog tipa ili pak reference na objekte imaju osobine promenljivih definišu se, kao i sve promenljive, iskazom tip imepolja [inicijalizator] gde je tip oznaka baznog tipa ili naziv klase kojoj polje pripada, a oznaka za skup modifikatora 4 primeri int a; double b = 3.5; X t; X px = new X(); t i px su reference na objekat klase X inicijalizacija; češće se vrši konstruktorom 5 Inicijalizacija sva polja moraju biti inicijalizovana polja se mogu inicijalizovati na četiri načina: direktno, u okviru definicije implicitno (automatski) u inicijalizacionom bloku konstruktorom (najčešći slučaj, o konstruktorima kasnije) 6

32 direktna inicijalizacija ista je kao za promenljive: class K { direktna inicijalizacija int a = 1;... 7 ako se polje ne inicijalizuje, početna vrednost biće zadata automatski, prema sledećoj šemi tip vrednost boolean false char '\u0000' byte 0 short 0 int 0 long 0 float 0.0 double 0.0 referenca null 8 inicijalizacioni blok je deo klase i zadaje se kao i svaki drugi blok class M { int n; inicijalizacioni blok double x; { n = 10; x = 2*Math.sin(n);... 9

33 opšti oblik metode je metode { zaglavlje blok 10 zaglavlje je oblika tip nazivmetode(parametri) gde je tip tip rezultata (ako ga nema tip je void), a parametri se zadaju konstruktom T 1 p 1,... T n p n kao i u C-u. 11 izvršavanje metode završava se, kao i u C-u, na tri načina: return izraz, gde je izraz vrednost rezultata return, ako je metoda void poslednjom naredbom, ako je metoda void 12

34 primer public class Rectangle { zaglavlje private double a, b; public void setrectangle(double a, double b) { this.a = a; this.b = b; blok public double geta() { return a; public double getb() {return b; public double perimeter() {return 2*(a+b); public double surface() {return a*b; kontrola pristupa za svaki član ponaosob! 13 objekat kao rezultat ako je vrednost metode objekat, kao rezultat vraća se referenca (koja je skalar!) omogućeno da vrednost metode bude niz! double[] zbirnizova(double[] x, double[] y) { double zbir = new double[x.length]; for(int i=0;i<zbir.length;i++) zbir[i] = x[i] + y[i]; return zbir; zbir je niz! metoda zbirnizova vraća referencu na niz! 14 aktiviranje metode metoda se aktivira, kao i u drugim programskim jezicima, preko objekta iskazom objekat.metoda(argumenti); primeri: Rectangle rec; double p; rec = new Rectangle(); kreiranje objekta rec rec.setrectangle(5, 4); p = 2 * rec.surface() - 3; aktiviranje metode setrectangle 15

35 prenos argumenata način prenosa argumenata je standardan: bazni tipovi i stringovi prenose se po vrednosti, (kao i same reference na objekte!) objekti (uključujući i nizove) prenose se po adresi (tako da metoda radi sa originalom!) 16 prenos po vrednosti odnosi se na parametre baznih tipova, na stringove i na reference prilikom aktiviranja metode na steku se pravi kopija argumenta ako se argument unutar metode promeni, to nema uticaja na originalnu vrednost, jer se menja vrednost kopije na steku 17 prenos objekata objekti se prenose po adresi, tako da metoda radi sa originalnim objektom i svaka promena njegovog stanja unutar metode predstavlja promenu stanja originala! važna napomena: prenos po adresi u javi se svodi na prenos reference po vrednosti, tj. na steku se pravi kopija reference ako se unutar metode promeni referenca (a ne objekat) to nema uticaja na njenu originalnu vrednost koja ostaje nepromenjena 18

36 public void m(k par) { par.set(j); ako se objekat par promeni, menja se original public void m(k par) { par = new K(); ako se referenca par promeni, originalna ref. par ostaje ista final se odnosi se na referencu, a ne na objekat! public void m(final K par) { par = new K(); ako se referenca par promeni, biće javljena greška! 19 ob m(ob) 20 Konstruktori konstruktori su metode koje se pozivaju prilikom kreiranja objekta; sam objekat kreira se operacijom new može ih biti više, a svi nose ime klase nemaju nikakav tip jer se ne pozivaju direktno (poziva ih new) ako se ne napiše nijedan konstruktor, prevodilac će napraviti ugrađeni konstruktor (konstruktor bez parametara, sa praznim telom). 21

37 primer dva konstruktora za klasu Rectangle: public class Rectangle { private double a, b; public Rectangle(double a, double b) { this.a = a; this.b = b; public Rectangle(Rectangle rec) { a = rec.a; b = rec.b; polje this kao i u drugim programskim jezicima, u svakom objektu postoji polje this, što predstavlja referencu na samog sebe kada se u metodi napiše ime nekog polja x, podrazumeva se this.x na primer, drugi konstruktor ima stvarni oblik public Rectangle(Rectangle rec) { this.a = rec.a; this.b = rec.b; 23 smeštanje klase klasa se smešta u datoteku koja se po imenu poklapa sa klasom, a ima ekstenziju.java pored te klase, u istoj datoteci može se naći još poneka klasa, ali ona ne može biti public dakle, klasa Rectangle mora se smestiti u datoteku Rectangle.java kada se klasa prevede kompajlerom javac biće stvoren bajt-kod sa ekstenzijom.class (u našem primeru Rectangle.class) 24

38 Instanciranje klase klasa se instancira u dva razdela koji se mogu realizovati jednom ili dvema naredbama: definisanje reference kreiranje objekta i usmeravanje reference na njega; objekat je uvek na hipu! definisanje reference: NazivKlase nazivreference; primer: Rectangle rec; 25 objekat se kreira operacijom new uz poziv konstruktora i rezultat se dodeljuje referenci nazivreference = new konstruktor(argumenti); primer: rec = new Rectangle(3, 4); instanciranje se može izvesti i jednom naredbom Rectangle rec = new Rectangle(3, 4); 26 referenca objekat rec sam objekat je bezimen! Rectangle rec = new Rectangle(3, 4); 27

39 Uništavanje objekata java nema metode tipa destruktora, niti se objekti mogu uništiti eksplicitnom operacijom umesto tog, postoji background proces, nazvan Garbage Collector (gc) koji automatski uništava neaktuelne objekte (tj. objekte koji nisu referencirani) npr. ako se u programu izvede operacija ob = null, u nekom trenutku gc će osloboditi memoriju koju je zauzimao objekat 28 gc se uključuje automatski i nije dobra praksa pokušavati sa eksplicitnim pozivom (koji je moguć) gc čisti samo hip i ne oslobađa druge zauzete resurse često se uključuje (i donekle usporava rad VM) svaka klasa poseduje metodu void finalize() koju podešavamo tako da izvrši završne radnje pri uništavanju objekta (npr. zatvori neki tok i sl.). Pri uništavanju gc obavezno poziva ovu metodu 29 Kontrola pristupa članovima java ima četiri nivoa kontrole pristupa članovima klase, od kojih navodimo, za sada, dva: private - samo metode matične klase public - metode svih klasa za svaki član modifikator se zadaje posebno 30

40 pristup članovima klase poljima se pristupa i metode se pobuđuju pomoću operatora selekcije. primeri: Rectangle r = new Rectangle(3, 5); double x, y, z; x = 2*r.surface() - 4.5; r.setrectangle(5, 8); z = r.a + r.b; //ne moze! a i b su private! y = r.getb(); 31 Dodela operator dodele = izvršava se nad referencama, a ne objektima posle dodele, obe reference pokazuju na isti objekat! ob2 ob2 = ob1 ob1 32 Kloniranje postupak pravljenja kopije objekta nosi naziv kloniranje može se izvesti na više načina, a najjednostavniji i najčešći jeste korišćenje konstruktora Rectangle r1 = new Rectangle(3,5); r2; r2 = new Rectangle(r1); r1 r2 33

41 Upoređivanje operatorima == i!= upoređuju se reference, a ne objekti! r1!= r2 r3 r4 r3 == r4 r2 r1 34 Upoređivanje stanja provera da li su dva objekta u istom stanju (imaju iste vrednosti polja) vrši se tako što se pravi (obična!) metoda sa zaglavljem public boolean equals(object ime_parametra) primenjena na objekat ob, u obliku ob.equals(ob1) metoda treba da vrati true ako su ob i ob1 klonovi, a false u suprotnom. ako je ob==ob1 (jedan objekat), programer odlučuje u zavisnosti od konkretnog slučaja 35 equals vraća true r5 r6 programer odlučuje! r1 r2 r4 r3 equals vraća false 36

42 primer za klasu Rectangle: boolean equals(object rec) { return (a==((rectangle)rec).a) & (b==((rectangle)rec).b); eksplicitna konverzija metoda vraća true i ako je u pitanju isti objekat (odluka programera!) zapaziti eksplicitnu konverziju iz Object u Rectangle 37 Rectangle r1, r2, r3, r4; r1 = new Rectangle(1,2); r2 = new Rectangle(1,2); r3 = new Rectangle(3,4); r4 = new Rectangle(r1); //kloniranje! r5 = r1; //r5 i r1 referenciraju isti objekat! r1.equals(r2) true r1.equals(r3) false r1.equals(r4) true r1.equals(r5) true 38 primer za klasu Rectangle: boolean equals(object rec) { return (this!=rec) & (a==((rectangle)rec).a) & (b==((rectangle)rec).b); metoda vraća false ako je u pitanju isti objekat (odluka programera!) zapaziti eksplicitnu konverziju iz Object u Rectangle 39

43 Rectangle r1, r2, r3, r4; r1 = new Rectangle(1,2); r2 = new Rectangle(1,2); r3 = new Rectangle(3,4); r4 = new Rectangle(r1); //kloniranje! r5 = r1; //r5 i r1 referenciraju isti objekat! r1.equals(r2) true r1.equals(r3) false r1.equals(r4) true r1.equals(r5) false 40

44 7 STATIČKI ČLANOVI KLASE 1 to su članovi klase za čiju upotrebu nije neophodan objekat definišu se dodavanjem modifikatora static mogu biti polja, metode ili unutrašnje klase statička polja igraju ulogu globalnih promenljivih, a statičke metode igraju ulogu potprograma o statičkim unutrašnjim klasama - kasnije 2 statičke metode pošto za aktiviranje statičkih metoda nije potreban objekat, one predstavljaju način za realizaciju (običnih) potprograma! statička metoda definiše se dodavanjem modifikatora static u zaglavlje u načelu, aktivira se iskazom naziv-klase.metoda(argumenti) može se aktivirati i uobičajeno, preko objekta naziv-objekta.metoda(argumenti) 3

45 na primer, standardna klasa Math sadrži matematičke funkcije realizovane kao statičke metode funkcija sin aktivira se, na primer, sa Math.sin(2*x+5) gde je Math naziv pomenute klase. zapaziti da su metode main, println i print statičke metode! 4 Neka je Point klasa čiji objekti predstavljaju tačke u Dekartovom koordinatnom sistemu public class Point { private double x, y; //koordinate public Point(double x, double y) { this.x = x; this.y = y; public double getx() {return x; public double gety() {return y; public void set(double x, double y) { this.x = x; this.y = y; statička metoda public static double distance(point p1, Point p2) { return Math.sqrt(Math.pow(p1.x()-p2.x(),2)+ Math.pow(p1.y()-p2.y(),2)); statička metoda statička metoda 5 primer: Point a, b; double r1, r2, r3; a = new Point(1,2); b = new Point(3,4); r1 = Point.distance(a,b); poziv preko klase (standardni postupak) može i ovako Point c = new Point(10,20); r2 = c.distance(a,b); //vazi r1==r2! Point q = null; r3 = q.distance(a,b); //vazi r1==r2==r3! moze čak i ovako! 6

46 statička polja statička polja predstavljaju način za realizaciju globalnih promenljivih i imenovanih konstanata mogu biti baznog ili klasnog tipa (objekti) definišu se dodavanjem modifikatora static u definiciju i najčešće su public u načelu, pristupa im se iskazom naziv-klase.polje može se pristupiti i uobičajeno, preko objekta (vrlo retko) naziv-objekta.polje 7 na primer, standardna klasa Math sadrži polje PI realizovano kao statičko polje pristupa mu se sa Math.PI zapaziti da je out statičko polje klasnog tipa u klasi System! 8 inicijalizacija statičkih polja statička polja se inicijalizuju, kao i nestatička, na četiri načina: direktno, u okviru definicije implicitno (automatski) putem konstruktora tzv. statičkim blokom prva tri načina: identično, kao i kod nestatičkih polja 9

47 statički inicijalizacioni blok je deo klase i zadaje se kao i svaki drugi blok, sa dodatkom reči static class K { public static int w; statički inicijalizacioni blok static double x; static { w = 10; x = 2*Math.sqrt(w);...! 10 statički inicijalizacioni blok biće izvršen: pri prvom obraćanju statičkom članu (klasa ne mora biti instancirana) ili pri prvom instanciranju klase pošto u istoj klasi mogu da postoje i nestatička i statička polja, redosled inicijalizacije je statička polja, pa onda nestatička polja 11 odnos nestatičkih i statičkih članova pravilo je jednostavno: statičke metode mogu referencirati samo statičke članove klase (ne mogu referencirati nestatičke članove) nestatičke metode mogu referencirati sve članove, statičke i nestatičke konstruktori mogu referencirati sve članove klase 12

48 primer public class Klasa { private static double a; //staticko polje; private double x; //nestaticko polje public static void seta(double aa) {a = aa; public double geta() {return a; public static void setx(double x) {this.x = x; public double getx() {return x; public static double stm() { double z = getx(); return z; ne može: statička metoda obraća se nestatičkoj metodi getx može: nestatička metoda obraća se statičkom polju a ne može: statička metoda obraća se nestatičkom polju x 13 realizacija imenovanih konstanata imenovane konstante realizuju se kao zaključana statička polja zaključavaju se modifikatorom final public class K { public static final boolean TACNO = true;... imenovana konstanta TACNO koristi se putem iskaza K.TACNO i ima vrednost true u klasi Math postoji tako realizovana konstanta Math.PI, koja ima vrednost

49 8 DOKUMENTOVANJE KLASE 1 zbog velikog broja metoda, klasa koja nije (dobro) dokumentovana neupotrebljiva je! dokumentuje se čitava klasa, kao i njeni članovi (polja i metode) zbog lakše izrade, dokumentacija je deo izvornog koda klase uključuje se u izvorni kod pomoću posebnog oblika komentara /** dokumentacione direktive */ 2 dokumentacione direktive ima ih više, sa opštim propratni_tekst dokumentacija se formira iz izvornog koda posebnim programom javadoc javadoc formira dokumentaciju u obliku html dokumenta, koji se pregleda običnim (bilo kojim) pretraživačem 3

50 ime klasa klasa Opis direktive opis parametra metode opis rezultata metode izuzetak pozivanje na drugu klasu date Napon u autor pozivanje na drugu metodu podaci o Jovan podaci o verziji 4 /** * Sat sa inkrementom od jedne sekunde D. Malbaski 2.0 */ public class Clock { int hour,min,sec; //Podrazumevane vrednosti hour==min==sec==0 /** * Postavlja vreme na zadatu vrednost. * Sekunde se automatski postavljaju na 0. h Sat m Minut */ public void settime(int h,int m) { hour= h; min= m; sec= 0; 5 /** * Ocitava sat Sat */ public int gethour() { return hour; /** * Ocitava minut Minut */ public int getmin() { return min; /** * Ocitava sekund Sekunda */ public int getsec() { return sec; 6

51 /** * Pomera casovnik za 1 sekund i podesava sate i minute. */ public void tick() { if((sec=(sec+1)%60)==0) if((min=(min+1)%60)==0) hour= (hour+1)%24; Programsku dokumentaciju formiraćemo pozivom programa javadoc sa sledećim oblikom: javadoc -d doc -author -version Clock.java što znači da će se dokumentacijske datoteke naći u direktorijumu doc koji je poddirektorijum onog iz kojeg je aktiviran program javadoc i da se zahteva da u dokumentaciju budu uvršteni i podaci o autoru, kao i oznaka verzije. Pretraživačem se otvara dokument Index.html 7 8 9

52 9 NASLEĐIVANJE I POLIMORFIZAM 1 A B sintaksa: class B extends A { //dodati clanovi // redefinisane metode 2 opšte osobine nasleđivanja za realizaciju se ne koristi izvorni kod proširivanje dodavanjem novih članova (naravno) postoji redefinisana metoda mora imati isto zaglavlje; ako nema iste parametre, u izvedenoj klasi postojaće obe verzije! nasleđivanje je tranzitivno višestrukog nasleđivanja nema 3

53 posebne osobine nasleđivanja i u javi postoji kontrola pristupa nivoa protected i java ima ugrađeni i podrazumevani konstruktor modifikatorom final u definiciji klase zabranjuje se njeno nasleđivanje modifikatorom final u definiciji metode zabranjuje se njeno redefinisanje; kompajler će pokušati da tu metodu realizuje in-line 4 rezime primene final 1. uz promenljivu služi za zaključavanje 2. uz parametar metode sprečava promenu vrednosti 3. uz klasu sprečava nasleđivanje 4. uz metodu sprečava redefinisanje 5 redefinisanje public class A {. public void met(int par) { public class B extends A {. public double met(int par) { public void met(int par) { public class C extends A { public void met(double par) { ne može! redefinisana metoda dodata metoda. U klasi C postoje obe verzije 6

54 ima dve namene: ključna reč super kada se upotrebi kao referenca, označava verziju metode iz neposrednog pretka kada se upotrebi kao metoda predstavlja poziv konstruktora neposrednog pretka i ključna reč this može se u nekoj metodi upotrebiti za poziv konstruktora matične klase 7 public class A {.. public void set(int i) { public class B extends A { redefinisana.. poziv verzije set iz klase A public void set(int i) { public int setfroma(int k) { super.set(k); 8 public class A { public A(int i) { public class B extends A { public B(int j) { super(j);.. poziv konstruktora klase A 9

55 konstruisanje pri nasleđivanju slična situacija kao u C ++ : konstruktor date klase mora pozvati konstruktor bazne klase, eksplicitno (pomoću super) ili implicitno (kada se poziva podrazumevani konstruktor bazne klase) mala razlika: pri eksplicitnom pozivu konstruktor počinje pozivom konstruktora bazne klase (ispred ne sme biti ništa) 10 izvršavanje A 0 pozivanje objekat klase X A 1 A 0 A 1... A n X A n X iz A 0 iz A 1 iz A n iz X svaki konstruktor sadrži eksplicitan ili implicitan poziv konstruktora natklase implicitno se poziva podrazumevani konstruktor; ako ga nema javlja se greška 11 public class An { public An(int i) { public class X extends An { public X(int j) { super(j);..... poziv konstruktora klase An ovde ne sme biti ničega 12

56 Polimorfizam u javi postoje sve vrste polimorfizma: parametarski (generičke klase), inkluzioni, preklapanje i koercitivni 13 inkluzioni polimorfizam Inkluzioni polimorfizam potiče iz opšte logike, međusobno je uslovljen nasleđivanjem i mora da važi u svakom objektnom jeziku! inkluzioni polimorfizam može se ukratko formulisati sledećim tvrđenjem: objekat-potomak se u svakom trenutku može tretirati kao predak 14 inkluzioni polimorfizam ispoljava se i u javi u tri standardna slučaja: referenca na potomak može se dodeliti referenci na predak referenca na potomak može biti argument metode čiji je parametar definisan kao predak metoda koja, kao rezultat vraća predak, može ga unutar tela formirati kao referencu na potomak 15

57 dodela Predak m redefinisana metoda Potomak m Predak pr; Potomak po = new Potomak(); pr = po; pr.m(); poziva se verzija određena objektom, tj. verzija iz potomka (kao kod virtuelnih metoda u C ++ ) 16 zamena parametra argumentom tip metoda(predak pr) {... može se pozvati sa metoda(po) gde je po objekat iz klase Potomak 17 potomak kao rezultat Predak metoda(parametri) { Potomak pt = new Potomak();... return pt; 18

58 Dinamičko povezivanje Dinamičko ("kasno") povezivanje (dynamic linkage, dynamic dispatch, late binding) postoji i u javi, jer je to osobina nevezan za programski jezik u iskazu ob.metoda(parametri) verzija metode određena je objektom koji trenutno referiše referenca ob i ne može se precizirati u toku prevođenja; postaje poznata tek u trenutku izvršavanja 19 preklapanje java nema preklapanja operatora preklapanje metoda postoji i vrlo intenzivno se koristi: u različitim klasama mogu postojati istoimene metode u istoj klasi takođe mogu postojati istoimene metode, a najmanja detektabilna razlika je tip jednog parametra; tip rezultata ne učestrvuje u detekciji različitih verzija na primer, metoda println realizovana je u više verzija, sa različitim tipom parametara 20 koercitivni (prinudni) polimorfizam realizije se putem eksplicitne konverzije: (ciljni_tip)promenljiva veoma često se koristi u kombinaciji sa nasleđivanjem odn. inkluzionim polimorfizmom 21

59 neka su pr i po reference redom na predak i potomak inkluzioni polimorfizam dozvoljava dodelu oblika pr = po dodela po = pr nije dozvoljena, iako je pod određenim uslovima izvodljiva ova dodela moguća je pod uslovom da referenca pr ne pokazuje na predak, nego na potomak (ili neki od "potomkovih potomaka") 22 pr Predak Potomak pr po = pr nije moguće po = pr jeste moguće da bi se izvela dodela (kada je moguća), mora se primeniti koercija oblika po = (Potomak)pr 23 provera legalnosti koercije vrši se posebnim binarnim operatorom instanceof; levi operand je objekat (referenca), a desni klasa opšti oblik: ob instanceof K ima logičku vrednost true ako ob referiše objekat klase K ili klase koja je potomak K false u suprotnom 24

60 pr Predak Potomak pr pr instanceof Potomak je false pr instanceof Potomak je true u našem primeru, bezbedna dodela bila bi if(pr instanceof Potomak) po = (Potomak)pr; napomena: ako pr referiše klasu koja nije u vezi nasleđivanja sa Potomak, operator instanceof opet vraća false 25 Jedinstvena hijerarhija klasa jedna od najvažnijih osobina jave: sve klase čine jedinstvenu hijerarhiju baziranu na nasleđivanju koren te hijerarhije jeste klasa sa nazivom Object zbog tranzitivnosti, klasa Object je predak svake javine klase! ako neku klasu K ne izvedemo eksplicitno iz druge klase, ona će automatski biti izvedena iz klase Object 26 M public class M {.. klasa M se implicitno izvodi iz klase Object, tako da će biti prevedena kao public class M extends Object {.. 27

61 Klasa Object metode definisane u klasi Object postoje u svim javinim klasama neke karakteristične metode: Object clone() kloniranje objekta boolean equals(object ob) upoređivanje dva objekta; ako se ne redefiniše vraća false void finalize() koristi je GC pri uništavanju objekta String tostring() pretvaranje objekta u string; ako se ne redefiniše vraća prazan string 28 equals metoda equals može se redefinisati ili dodati boolean equals(object rec) { redefinisana return (a==((rectangle)rec).a) & (b==((rectangle)rec).b); boolean equals(rectangle rec) { return (a==rec.a) & (b==rec.b); dodata 29 ako je metoda equals dodata, u klasi će postojati dve verzije: jedna nasleđena iz klase Object što vraća false i druga, dodata to stvara mogućnost da se objekat upoređuje sa objektom bilo koje klase; ako se klase ne slažu, vraćena vrednost biće false, jer se aktivira nasleđena verzija ako je rec objekat klase Rectangle, a crc objekat klase Circle (krug), tada je poziv rec.equals(crc) legalan i vraća false 30

62 Kontrola pristupa opšte pravilo: prilikom redefinisanja, kontrola pristupa ne može se pooštriti, a može se ublažiti na primer, metoda koja je bila public ne može se redefinisati tako da postane private ili protected razlog: dinamičko povezivanje 31 public class A {. public void met() { public class B extends A {. private void met() { //redefinisana zabranjeno A oba; B obb = new B(); oba = obb; //legalna dodela potomka pretku oba.met(); Greška! Aktivirala bi se private verzija iz klase B. Greška bi se prijavila tek prilikom izvršenja! 32

63 10 MODULARIZACIJA I INKAPSULACIJA 1 Modularizacija Modularnost klase (proširivost+višekratna upotreba) ostvaruje se kombinacijom dva postupka: smeštanjem klase u posebnu datoteku objedinjavanjem takvih datoteka u module koji nose naziv paketi (odgovaraju bibliotekama) public default default klasa klasa klasa datotek a paket public klasa datotek a 2 osobine paketa sve klase koje pripadaju istom paketu moraju se nalaziti u istom direktorijumu paket ima naziv koji se mora poklapati sa nazivom tog direktorijuma (konvencija) naziv direktorijuma (dakle, i naziv paketa) piše se isključivo malim slovima paket može imati potpakete (koji se, dakle, moraju naći u odgovarajućim subdirektorijumima) 3

64 UML u UML, paket se prikazuje simbolom pripadnost klase paketu prikazuje se ovako: paket::klasa 4 formiranje paketa struktura paketa i potpaketa prati strukturu direktorijuma korendir paket1 paket1::a paket1::b paket2::c paket2 paket21 paket21::d 5 smeštanje klase u paket da bi se neka klasa X smestila u paket pak moraju se uraditi dve stvari: izvorni kod klase X mora početi naredbom package naziv_paketa; package pak; public class X {.. datoteka X.class sa bajt-kodom klase X mora se fizički smestiti u direktorijum pak 6

65 prevođenje izvornog koda kompajliranje izvornog koda klase vrši se iz tzv. "korenog"direktorijuma koji je nadređen direktorijumu sa paketom (u našem primeru, to je direktorijum korendir) ako se radi o potpaketu, naredba package mora da prati putanju od korenog direktorijuma do direktorijuma sa potpaketom:! package paket2.paket21 7 A.java package paket1; public class A {. B.java package paket1; public class B {. C.java package paket2; public class C {. D.java package paket2.paket21; public class D {. javac paket1\a.java javac paket1\b.java javac paket2\c.java javac paket2\paket21\d.java prevodi se iz direktorijuma korendir 8 ISHOD: A.class nalazi se u direktorijumu paket1 B.class nalazi se u direktorijumu paket1 C.class nalazi se u direktorijumu paket2 D.class nalazi se u direktorijumu paket21 9

66 Korišćenje klase kada se klasa nalazi u paketu, njen identifikator nije više samo ime, već ime kvalifikovano nazivom paketa dakle, identifikatori navedenih klasa jesu paket1.a paket1.b paket2.c paket2.paket21.d 10 primeri ako se navedene klase koriste u nekoj klasi koja je u korenom direktorijumu korendir, tada su odgovarajući iskazi npr. paket1.a obja = new paket1.a( ); paket1.b = new paket1.b(...); paket2.paket21.d = new paket2.paket21.d( ); važi i za poziv konstruktora, kao i za poziv statičkih članova 11 Skraćenica import da bi se izbeglo korišćenje punog identifikatora klase, uvedena je skraćenica import paket.klasa; ili import paket.*; čijom primenom se identifikator klase ponovo svodi samo na ime skraćenice import (ako ih ima, a skoro uvek ih ima) navode se u klijentu neposredno iza naredbe package (ako je ima) oblik import.* omogućuje skraćeno obraćanje svim klasama paketa 12

67 primeri import paket1.a; A oba = new A( ); paket1.b obb = new paket1.b( ); import paket1.*;. A oba = new A( ); B obb = new B( ); 13 Varijabla classpath do sada opisana struktura je nefleksibilna, praktično neupotrebljiva, jer se klijent mora nalaziti u korenom direktorijumu šta ako nije (a to je gotovo uvek slučaj)? 14 C dir1 klijent dir3 dir2 G dir4 X.class paket problem se rešava varijablom okruženja (environment variable) sa nazivom classpath 15

68 varijabla classpath setuje se tako da prati putanju direktorijuma, sve do direktorijuma koji je direktno nadređen direktorijumu u kojem se nalazi paket setuje se komandom operativnog sistema koja u Windows ima oblik set CLASSPATH = putanja do naddirektorijuma za prethodni primer set CLASSPATH =.; c:\dir3\dir4 tekući dir. 16 najbolje je pomenutu putanju nadodati na već formiranu vrednost set CLASSPATH = %CLASSPATH%;.; c:\dir3\dir4 zatečena vrednost CLASSPATH varijablu CLASSPATH po pravilu održava razvojni sistem (npr. Eclipse) 17 Imenovani i neimenovani paket u isti direktorijum mogu se smestiti dva paketa: jedan nosi ime direktorijuma, a drugi nema ime dakle, u direktorijumu npr. pack mogu se nalaziti klase koje imaju naredbu package pack; one pripadaju paketu sa nazivom pack klase koje nemaju ovu naredbu; one pripadaju neimenovanom paketu 18

69 posmatrajmo direktorijum pack package pack; public class X {... package pack; public class Y {... pripada imenovanom paketu pack pripada imenovanom paketu pack pripada neimenovanom paketu public class Z {... imenovani i neimenovani paket koji su u istom direktorijumu nemaju međusobno nikakve logičke veze, tojest imenovani i neimenovani paket su različiti paketi, bez obzira na to što su u istom direktorijumu 19 Inkapsulacija Inkapsulacija je sredstvo za objedinjavanje strukture (polja) i ponašanja (metode) u softversku celinu, tako da bude ostvarena kontrola pristupa članovi klase u javi se inkapsuliraju naredbom class i modifikatorima kontrole pristupa modifikatori kontrole pristupa primenjuju se na pojedinačne članove (polja, metode, unutrašnje klase); modifikator se navodi uz svaki član celu klasu 20 Kontrola pristupa članovima java ima četiri nivoa kontrole pristupa članovima klase (od najzatvorenijeg do najotvorenijeg): private ovaj modifikator nema ključnu reč! samo metode matične klase (default ili friendly) protected public prethodno + metode klasa iz istog paketa prethodno + metode potklasa metode svih klijenata 21

70 Kontrola pristupa članovima public class A { int i; protected double x; private long z; public A(int k, double w) {... public void met1() {...; double met2() {...;... ovako izgleda nivo default nivo default 22 još jednom: prilikom redefinisanja nivo kontrole pristupa ne sme se pooštriti 23 Kontrola pristupa čitavoj klasi postoje dva nivoa kontrole pristupa klasi: nivo default (bez modifikatora): klasu mogu koristiti samo klase iz istog paketa nivo public: klasu mogu koristiti sve klase public class A {... //nivo public class B {... //nivo default naročito obratiti pažnju na nivo default; lako se može desiti da se modifikator public zaboravi napisati, pa klasa automatski postaje nedostupna za klase izvan svog paketa! 24

71 Smeštanje klase u datoteku do sada smo smatrali da se svaka klasa nalazi u sopstvenoj datoteci čije se ime poklapa sa imenom klase prošireno pravilo: u jednoj datoteci može se nalaziti više klasa, ali samo je jedna public i nosi ime datoteke; ostale, ako ih ima, moraju biti default 25 primer Napravićemo paket dekart sa klasama Tack i Duz koje predstavljaju tačku i duž u pravouglom koordinatnom sistemu (obe klase moraju se nalaziti u direktorijumu dekart) dekart::tacka x:real y:real +x():real +y():real 2 kompozicija dekart::duz a:tacka b:tacka +a():tacka +b():tacka +duzina():real 26 Tacka.java package dekart; public class Tacka kontrola pristupa: default double x, y; public Tacka(double x, double y) { this.x = x; this.y = y; public double x() { return x; public double y() { return y; 27

72 Duz.java package dekart; public class Duz { Tacka a, b; public Duz(Tacka a, Tacka b) { this.a = a; this.b = b; public Tacka a() { return a; public Tacka b() { return b; 28 public double duzina() { return Math.sqrt(Math.pow((a.x-b.x),2) + Math.pow((a.y-b.y),2)); { metoda duzina ima direktan pristup poljima x i y klase Tacka, jer je klasa Duz u istom paketu u kojem je i klasa Tacka 29 Primer klijentskog softvera import dekart.*; public class Test { public static void main(string args[]) { da bi se izbeglo koriscenje punih naziva dveju klasa koji bi trebalo da budu dekart.tacka i dekart.duz Duz d = new Duz(new Tacka(1,2),new Tacka(3,4)); System.out.println("Duzina duzi: "+d.duzina()); 30

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo Nasledjivanje klasa Modifikator new class A { public virtual void F() { Console.WriteLine("I am A"); } } class B : A { public override void F()

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Naredbe ciklusa for petlja Naredbe ciklusa Veoma često se ukazuje potreba za ponavljanjem nekih naredbi više puta tj. za ponavljanjem nekog

More information

PREDMET. Osnove Java Programiranja. Čas JAVADOC

PREDMET. Osnove Java Programiranja. Čas JAVADOC PREDMET Osnove Java Programiranja JAVADOC Copyright 2010 UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija,

More information

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi DELEGATI Bezbedni pokazivači na funkcije Jer garantuju vrednost deklarisanog tipa. Prevodilac prijavljuje grešku ako pokušate da povežete

More information

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt Funkcionalno programiranje Interoperabilnost jezika Scala i Java Prevođenje u Java bajt kod Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući

More information

24/03/2018. Deklaracija promenljivih. Inicijalizacija promenljivih. Deklaracija i inicijalizacija promenljivih

24/03/2018. Deklaracija promenljivih. Inicijalizacija promenljivih. Deklaracija i inicijalizacija promenljivih Deklaracija promenljivih Inicijalizacija promenljivih Deklaracija promenljive obuhvata: dodelu simboličkog imena promenljivoj i određivanje tipa promenljive (tip određuje koja će vrsta memorijskog registra

More information

PROGRAMIRANJE. Amir Hajdar

PROGRAMIRANJE. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Klase i objekti u Javi Primjer kroz klasu Krug Atributi i metode Inicijalizacija objekata (konstruktori) Polymorphism Statičke varijable i metode This Klase i objekti u

More information

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1 NIZOVI Niz deklarišemo navođenjemtipa elemenata za kojim sledi par srednjih zagrada[] i naziv niza. Ako je niz višedimenzionalni između zagrada[] se navode zarezi, čiji je broj za jedan manji od dimenzija

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Konverzija tipova Konverzija tipova Prilikom komunikacije aplikacije sa korisnikom, korisnik najčešće unosi ulazne podatke koristeći tastaturu.

More information

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa Uvod u programiranje - vežbe Kontrola toka izvršavanja programa Naredbe za kontrolu toka if, if-else, switch uslovni operator (?:) for, while, do-while break, continue, return if if (uslov) naredba; if

More information

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0. Kontrolne naredbe Primjeri: Opšti oblik razgranate strukture (if sa ) if (uslov) Naredba 1 ili blok naredbi1 Naredba 2 ili blok naredbi2 Učitati broj x i štampati vrijednost double x, z; Scanner in=new

More information

Java. Ugnježdeni tipovi IMI PMF KG OOP 09 AKM. najveći deo teksta je preuzet sa slajdova Prof. Dragana Milićeva (ETF Bg) namenjenih pedmetu OOP2

Java. Ugnježdeni tipovi IMI PMF KG OOP 09 AKM. najveći deo teksta je preuzet sa slajdova Prof. Dragana Milićeva (ETF Bg) namenjenih pedmetu OOP2 Java IMI PMF KG OOP 0 AKM 1 Ugnježdeni tipovi najveći deo teksta je preuzet sa slajdova Prof. Dragana Milićeva (ETF Bg) namenjenih pedmetu OOP2 Ugneždeni tipovi IMI PMF KG OOP 0 AKM 2 Unutrašnje klase

More information

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije } 1. FUNKCIJE I STRUKTRUE PROGRAMA Složeni problemi lakše se rašavaju ako se podele na manje celine koje mogu nezavisno da se rešavaju. Rešenje celokupnog složenog problema dobija se kombinovanjem rešenja

More information

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici Programiranje u fizici Prirodno-matematički fakultet u Nišu Departman za fiziku dr Dejan S. Aleksić Programiranje u fizici 7-8 Definicija, inicijalizacija promenljivih 2/21 u C-u Program napisan u programskog

More information

Uputstvo za korišćenje logrotate funkcije

Uputstvo za korišćenje logrotate funkcije Copyright AMRES Sadržaj Uvod 3 Podešavanja logrotate konfiguracionog fajla 4 Strana 2 od 5 Uvod Ukoliko je aktivirano logovanje za RADIUS proces, može se desiti da posle određenog vremena server bude preopterećen

More information

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end. NAREDBA CIKLUSA SA PREDUSLOVOM WHILE 1.Odrediti vrednosti s i p nakon izvrsenja sledecih naredbi za dato a=43, a=34, a=105 program p1; var a,s,p:integer; write('unesite a:');readln(a); p:=a; s:=0; while

More information

Vežbe - XII nedelja PHP Doc

Vežbe - XII nedelja PHP Doc Vežbe - XII nedelja PHP Doc Dražen Drašković, asistent Elektrotehnički fakultet Univerziteta u Beogradu Verzija alata JavaDoc za programski jezik PHP Standard za komentarisanje PHP koda Omogućava generisanje

More information

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets CSS CSS CSS: Cascading Style Sheets - Opisuje izgled (appearance) i raspored (layout) stranice - Sastoji se od CSS pravila, koji defini[u skup stilova selector { property: value; 1 Font face: font-family

More information

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM

PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I POLIMORFIZAM PITANJA ZA II KOLOKVIJUM NASLJEĐIVANJE, VIRTUELNE FUNKCIJE I 1. Definicija svake klase sadrzi kljucnu rec iza koje se navodi ime klase: class public extends 2. Kada je funkcija clanica definisana izvan

More information

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

OBJEKTNO ORIJENTISANO PROGRAMIRANJE OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 12: NASLEĐIVANJE Miloš Kovačević Đorđe Nedeljković 1 /17 OSNOVNI KONCEPTI - Statički i dinamički tipovi podataka - Prepisivanje metoda superklase - Polimorfizam

More information

NIZOVI.

NIZOVI. NIZOVI LINKOVI ZA KONZOLNI C# OSNOVNO http://www.mycity.rs/net/programiranje-u-c-za-osnovce-i-srednjoskolce.html http://milan.milanovic.org/skola/csharp-00.htm Niz deklarišemo navođenjem tipa elemenata

More information

PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI

PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI PITANJA ZA II KOLOKVIJUM KLASE I OBJEKTI 1. Enkapsulacija je podataka. skrivanje apstrakcija nasledivanje 2. Unutar deklaracije klase navode se: definicije funkcija clanica prototipovi (deklaracije) funkcija

More information

VHDLPrimeri Poglavlje5.doc

VHDLPrimeri Poglavlje5.doc 5. VHDL opis kola koja obavljaju osnovne aritmetičke funkcije Sabirači Jednobitni potpuni sabirač definisan je tablicom istinitosti iz Tabele 5.1. Tabela 5.1. cin a b sum cout 0 0 0 0 0 0 0 1 1 0 0 1 0

More information

VRIJEDNOSTI ATRIBUTA

VRIJEDNOSTI ATRIBUTA VRIJEDNOSTI ATRIBUTA Svaki atribut (bilo da je primarni ključ, vanjski ključ ili običan atribut) može i ne mora imati ograničenja na svojim vrijednostima. Neka od ograničenja nad atributima: Null / Not

More information

Programiranje 1 Programski jezik C 2. čas. Mirko Spasić

Programiranje 1 Programski jezik C 2. čas. Mirko Spasić Programiranje 1 Programski jezik C 2. čas Mirko Spasić Operatori U C-u postoji veliki broj operatora. Mogu biti unarni (imaju jedan argument) i binarni (dva argumenta). Unarni operatori mogu biti prefiksni

More information

2. Linijska algoritamska struktura

2. Linijska algoritamska struktura Univerzitet u Nišu Građevinsko-arhitektonski fakultet Informatika 2 2. Linijska algoritamska struktura Milica Ćirić Blokovi za prikaz algoritma Algoritam se vizuelno može prikazati pomoću blok dijagrama,

More information

GUI - događaji (Events) i izuzeci. Bojan Tomić

GUI - događaji (Events) i izuzeci. Bojan Tomić GUI - događaji (Events) i izuzeci Bojan Tomić Događaji GUI reaguje na događaje (events) Događaj je neka akcija koju korisnik programa ili neko drugi izvrši korišćenjem perifernih uređaja (uglavnom miša

More information

Programske paradigme Funkcionalna paradigma

Programske paradigme Funkcionalna paradigma Programske paradigme Funkcionalna paradigma 1. čas: Uvod u funkcionalno programiranje. Programski jezik Haskel. Upoznavanje sa razvojnim okruženjem. Tipovi podataka. Funkcionalno programiranje Stil u programiranju

More information

Nasleđivanje i izvedene klase u jeziku C++

Nasleđivanje i izvedene klase u jeziku C++ Tema 08 Nasleđivanje i izvedene klase u jeziku C++ dr Vladislav Miškovic vmiskovic@singidunum.ac.rs Fakultet za informatiku i računarstvo - Tehnički fakultet OBJEKTNO ORIJENTISANO PROGRAMIRANJE 2016/2017

More information

Osnovne strukture podataka

Osnovne strukture podataka Osnovne strukture podataka Osnovni pojmovi Promenljive i konstante su osnovni oblici podataka sa kojima se operiše u programu Deklaracije listaju spisak promenljivih koje ce se koristiti, određuju kog

More information

C++ minitutorial. Osnovni elementi i koncepti programskog jezika C++ uz primere

C++ minitutorial. Osnovni elementi i koncepti programskog jezika C++ uz primere C++ minitutorial Osnovni elementi i koncepti programskog jezika C++ uz primere Sadržaj I. Ugrađeni tipovi podataka II. Doseg (scope) III. Životni vek objekta IV. Konverzija tipa (casting) V. Struktura

More information

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje.

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje. Univerzitet u Nišu Građevinsko-arhitektonski fakultet Informatika 2 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje Milica Ćirić Ciklična algoritamska struktura Ciklična struktura (petlja)

More information

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv Mašinska vizija Dr Nenad Jovičić 2017. tnt.etf.rs/~mv Linearne 2D geometrijske transformacije 2D geometrijske transformacije Pretpostavka: Objekti u 2D prostoru se sastoje iz tačaka i linija. Svaka tačka

More information

Objektno orijentisano programiranje

Objektno orijentisano programiranje Matematički fakultet, Univerzizet u Beogradu Katedra za računarstvo i informatiku Objektno orijentisano programiranje vežbe Biljana Stojanović Nemanja Mićović Nikola Milev 1 Stringovi String literali i

More information

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n.

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n. Rekurzivne metode Rekurzivan metod je onaj metod koji u nekoj svojoj instrukciji sadrži poziv samog sebe. Svakako prilikom kreiranja rekurzivnog metoda moramo voditi računa da ne dodje do beskonačne rekurzije

More information

1/42 SQL DDL. CREATE ALTER DROP Schema Table Tablespace Index View Domain Constraint... DECLARE TABLE (DB2)

1/42 SQL DDL. CREATE ALTER DROP Schema Table Tablespace Index View Domain Constraint... DECLARE TABLE (DB2) 1/42 SQL DDL CREATE ALTER DROP Schema Table Tablespace Index View Domain Constraint... DECLARE TABLE (DB2) 2/42 SQL DDL: CREATE SCHEMA CREATE SCHEMA ime-sheme [ AUTHORIZATION ime-vlasnika-sheme] [ CREATE

More information

Fortran 90. Numeričke Metode DECEMBAR ĐURĐEVAC NATAŠA

Fortran 90. Numeričke Metode DECEMBAR ĐURĐEVAC NATAŠA Fortran 90 Numeričke Metode DECEMBAR 2007. ĐURĐEVAC NATAŠA Zašto Fortran? jer je konstruisan da bi se koristio za rešavanje matematičkih problema. jer je jednostavan jezik sa dobrim performansama (odlična

More information

f2() f6() main() f3() f7() f4()

f2() f6() main() f3() f7() f4() VI Potprogrami i funkcije Uobičajeno je da se pri pisanju programa koji treba da reše složene probleme, problemi razlažu na niz jednostavnijih(elementarnih) delova Za njihovo rešavanje se pišu nezavisni

More information

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta String string ili znakovni niz (string) nije niz znakova u Javi su stringovi klase String paketa java.lang!!! Usporedba: char gf = G ; Niz znakova String char [] gf = { G, e, o, d, e, t, s, k, i ; String

More information

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Spojnice using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO;

More information

Prva recenica. Druga recenica.

Prva recenica. Druga recenica. Algoritmi i programiranje Predavanje 4 METODE LOKALNE, GLOBALNE VARIJABLE I KONSTANTE METODA je imenovani izdvojeni slijed naredbi koji rješava određeni zadatak i po potrebi se poziva jednom ili više puta

More information

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Obrada izuzetaka Šta je izuzetak? Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi. Prosleđuje izuzetak,

More information

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar PROGRAMIRANJE Amir Hajdar Teme 2 Packages Reference objekata Inheritance nasljeđivanje Exceptions Packages API Application Programmer Interface Sve klase ponuđene u sklopu Java jezika, uključujući i kompajler

More information

Naredbe za kontrolu toka

Naredbe za kontrolu toka Naredbe za kontrolu toka Naredbe za kontrolu toka Nakon odslušanog bit ćete u stanju: objasniti semantiku naredbi za kontrolu postupaka navesti sintaksu naredbi if, if-else i case u programskom jeziku

More information

Visoka tehnička škola Niš

Visoka tehnička škola Niš Visoka tehnička škola Niš Studijski program: Savremene računarske tehnologije Internet programiranje (7) Nasleđivanje klasa u Javi Prof. dr Zoran Veličković, dipl. inž. el. Novembar, 2017. Nasleđivanje

More information

Izrada VI laboratorijske vježbe

Izrada VI laboratorijske vježbe Izrada VI laboratorijske vježbe 1. Programirati proceduru koja se aktivira sa Standard palete alatki klikom na button Fajlovi. Prilikom startovanja procedure prikazuje se forma koja sadrži jedan list box

More information

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010 Programiranje Programski jezik C prof.dr.sc. Ivo Ipšić 2009/2010 Sadržaj Ulazno-izlazne funkcije Datoteke Formatirane datoteke Funkcije za rad s datotekama Primjeri Datoteke komunikacija između programa

More information

public static void main(string []args) { System.out.println("Hello World"); /* prints Hello World */

public static void main(string []args) { System.out.println(Hello World); /* prints Hello World */ Java Uvod Hello world primer Java program predstavlja skup objekata koji prozivaju jedni drugima metode i tako komuniciraju. Izvorni kod se uvek čuva u datotekama sa ekstenzijom.java. Ispod je predstavljen

More information

Algoritmi i strukture podataka 2. Čas, Uvod u C++

Algoritmi i strukture podataka 2. Čas, Uvod u C++ Algoritmi i strukture podataka 2. Čas, Uvod u C++ Aleksandar Veljković 2017/2018 1 Uvod Jezik C++ je jezik koji pripada objektno orijentisanoj paradigmi, ipak, u okviru ovog kursa naglasak neće biti na

More information

Računarske osnove Interneta (SI3ROI, IR4ROI)

Računarske osnove Interneta (SI3ROI, IR4ROI) Računarske osnove terneta (SI3ROI, IR4ROI) Vežbe MPLS Predavač: 08.11.2011. Dražen Drašković, drazen.draskovic@etf.rs Autori: Dražen Drašković Naučili ste na predavanjima MPLS (Multi-Protocol Label Switching)

More information

TEHNIKA I INFORMATIKA U OBRAZOVANJU

TEHNIKA I INFORMATIKA U OBRAZOVANJU TEHNIKA I INFORMATIKA U OBRAZOVANJU Konferencija 32000 Čačak 9-11. Maja 2008. UDK: 004 : 371 Stručni rad VEZA ZAVISNOSTI ACCESS Momčilo Vujičić 1, Munir Šabanović 2 Rezime: U radu je opisana veza zavisnosti

More information

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0

Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0 POM - Pomoć korisnicima Uputstva za instaliranje čitača Datalogic Skorpio u operativnom sistemu Windows 7 i višim POM-NA-XX-46, V3.0 IZUM, 2016 COBISS, COMARC, COBIB, COLIB, IZUM su zaštićeni znaci u posedu

More information

Visoka tehnička škola Niš

Visoka tehnička škola Niš Visoka tehnička škola Niš Studijski program: Savremene računarske tehnologije.net tehnologije (7) Klase, objekti i svojstva u C#-u Prof. dr Zoran Veličković, dipl. inž. el. Novembar, 2017. Osnovni pojmovi

More information

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET Katedra za elektroniku Računarska elektronika Grupa br. 11 Projekat br. 8 Studenti: Stefan Vukašinović 466/2013 Jelena Urošević 99/2013 Tekst projekta :

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka Ana Spasić 5. čas 1 Podupiti, operatori exists i in 1. Izdvojiti imena i prezimena studenata koji su položili predmet čiji je identifikator 2001. Rešenje korišćenjem spajanja

More information

Ovde će se raditi na funkcijama konverzija: konverzija tipa datuma u znak tip i obrnuto, konverzija broja u karakter tip i obrnuto

Ovde će se raditi na funkcijama konverzija: konverzija tipa datuma u znak tip i obrnuto, konverzija broja u karakter tip i obrnuto Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 5-1 Conversion Functions U db formatiranje i promene izgleda se izvode pomoću funkcija konverzija Ove

More information

Jezik Baze Podataka SQL. Jennifer Widom

Jezik Baze Podataka SQL. Jennifer Widom Jezik Baze Podataka SQL SQL o Jezik koji se koristi u radu sa relacionim bazama podataka o Nije programski jezik i manje je kompleksan. o Koristi se isključivo u radu za bazama podataka. o SQL nije case

More information

Osnove programskog jezika C#

Osnove programskog jezika C# Deklaracija i inicijalizacija promenljive u C# Osnove programskog jezika C# Deklaracija: int x; // samo deklaracija Inicijalizacija: x = 10; Deklaracija sa inicijalizacijom: int x = 10; Inicijalizcija

More information

Dežurni nastavnik: Kolokvijum traje 1.5 sat, prvih sat vremena nije dozvoljeno napuštanje kolokvijuma. Upotreba literature nije dozvoljena.

Dežurni nastavnik: Kolokvijum traje 1.5 sat, prvih sat vremena nije dozvoljeno napuštanje kolokvijuma. Upotreba literature nije dozvoljena. Dežurni nastavnik: Elektrotehnički fakultet u Beogradu Katedra za računarsku tehniku i informatiku Predmet: Testiranje Softvera (SI3TS) Nastavnik: doc. dr Dragan Bojić Asistent: dipl. ing. Dražen Drašković

More information

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

KLASIFIKACIJA JELENA JOVANOVIĆ.   Web: KLASIFIKACIJA JELENA JOVANOVIĆ Email: jeljov@gmail.com Web: http://jelenajovanovic.net PREGLED PREDAVANJA Šta je klasifikacija? Binarna i više-klasna klasifikacija Algoritmi klasifikacije Mere uspešnosti

More information

Java i Internet programiranje

Java i Internet programiranje Univerzitet u Novom Sadu Fakultet tehničkih nauka Katedra za računarske nauke i informatiku Branko Milosavljević Milan Vidaković Java i Internet programiranje Materijal za predmet Sintetski praktikum iz

More information

Funkcije, prenos parametara i dinamička alokacija memorije

Funkcije, prenos parametara i dinamička alokacija memorije Tema 04 Funkcije, prenos parametara i dinamička alokacija memorije dr Vladislav Miškovic vmiskovic@singidunum.ac.rs Fakultet za informatiku i računarstvo - Tehnički fakultet OBJEKTNO ORIJENTISANO PROGRAMIRANJE

More information

JavaScript JS Cookies

JavaScript JS Cookies Predmet: Aplikativni softver Predavač: dr Violeta Tomašević, vanr.prof. JavaScript JS Cookies Literatura Boško Nikolić, Internet programiranje: HTML, CSS, JavaScript, Panevropski univerzitet Apeiron za

More information

PARALELNO PROGRAMIRANJE

PARALELNO PROGRAMIRANJE Predavanje 09 Odjel za matematiku 1 PARALELNO PROGRAMIRANJE POSIX threadovi za C++ Predavanje 09 Odjel za matematiku 2 Programske niti (thread) unutar procesa Danas ćemo se upoznati s POSIX thread bibliotekom

More information

RAČUNARSKI PRAKTIKUM II

RAČUNARSKI PRAKTIKUM II Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM II Predavanje 07 - Uvod u PHP 4. svibnja 2015. Sastavio: Zvonimir Bujanović PHP PHP Interpretirani skriptni

More information

VMware Workstation. VMwareWorkstation ESX ($) (vmotion, DRS, HA, Storage vmotion) vcenter Server ($) Server. Guest OS

VMware Workstation. VMwareWorkstation ESX ($) (vmotion, DRS, HA, Storage vmotion) vcenter Server ($) Server. Guest OS VMware Workstation ESX ($) vcenter Server ($) (license manager) Server hardware (vmotion, DRS, HA, Storage vmotion) ESXi (freeware) (ESXi freeware is managed by the Virtual Infrastructure (or vsphere)

More information

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu:

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu: Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 7-1 Oracle Equijoin and Cartesian Product Prethodna sekcija se bavila upitima preko više od jedne tabele

More information

VB komande. Programiranje 1

VB komande. Programiranje 1 VB komande Programiranje 1 Zadatak 1: Sastaviti program koji se sastoji iz jedne ListBox kontrole, jedne Textbox kontrole i dva komandna dugmeta. Klikom na prvo komandno dugme umeće se u ListBox sadržaj

More information

modifier returnvaluetype methodname(list of parameters) { // Method body; }

modifier returnvaluetype methodname(list of parameters) { // Method body; } Početna grupa, 28.11.2015. Metodi 1. Metodi opšti oblik metoda: modifier returnvaluetype methodname(list of parameters) // Method body; 2. Ime metoda: početno slovo je malo, a zatim slijede slova, cifre

More information

Projektovanje namenskih računarskih struktura

Projektovanje namenskih računarskih struktura Univerzitet u Novom Sadu Fakultet tehničkih nauka Odsek za računarsku tehniku i računarske komunikacije Projektovanje namenskih računarskih struktura Mehanizam JNI i upotreba u Androidu i aplikacijama

More information

Projektovanje Namenskih Računarskih Struktura 1. Sistemi zasnovani na Androidu

Projektovanje Namenskih Računarskih Struktura 1. Sistemi zasnovani na Androidu Univerzitet u Novom Sadu Fakultet tehničkih nauka Odsek za računarsku tehniku i računarske komunikacije Projektovanje Namenskih Računarskih Struktura 1 Sistemi zasnovani na Androidu Objektno orijentisani

More information

RDF, RDFS i JSON-LD. NIKOLA MILIKIĆ URL: nikola.milikic.info

RDF, RDFS i JSON-LD. NIKOLA MILIKIĆ   URL: nikola.milikic.info RDF, RDFS i JSON-LD NIKOLA MILIKIĆ EMAIL: nikola.milikic@fon.bg.ac.rs URL: nikola.milikic.info Linked Data Linked Data predstavlja mrežu podataka koji su opisani na način da ih mogu razumeti mašine (koristeći

More information

Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju

Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju Staša Vujičić Čas 9 Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju sve od početka. Odgovarajuće funkcije

More information

Lekcija 02 Uslovni iskazi i petlje, Funkcije. Miljan Milošević

Lekcija 02 Uslovni iskazi i petlje, Funkcije. Miljan Milošević Lekcija 02 Uslovni iskazi i petlje, Funkcije Miljan Milošević USLOVNI ISKAZI I PETLJE, FUNKCIJE 01 02 03 04 Uvod Uslovni iskazi i Ciklusi Operatori skoka Funkcije u C-u grananja Uslovni iskaz if Uslovni

More information

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list. Ime i prezime: Asistent: Predava : Programiranje (C) 1. kolokvij 14. 4. 2003. 1. 2. 3. 4. 5. 6. 7. Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj

More information

Java Server Pages. 31-Dec-12

Java Server Pages. 31-Dec-12 Java Server Pages 31-Dec-12 Prednosti JSP Pomoću JSP se mogu uraditi iste stvari kao i pomoću servleta, ali korišćenje JSP olakšava pisanje samog HTML koda čitanje i održavanje HTML koda U odnosu na korišćenje

More information

Programiranje kroz aplikacije. Kontrola toka programa Nizovi

Programiranje kroz aplikacije. Kontrola toka programa Nizovi Programiranje kroz aplikacije Kontrola toka programa Nizovi Kontrola toka u VBA If naredba Select Case naredba GoTo naredba For petlja While petlja Do While petlja Do Until petlja If naredba Opšti oblik

More information

Objektno orijentisano programiranje. Aleksandra Klašnja-Milićević Marko Marković

Objektno orijentisano programiranje. Aleksandra Klašnja-Milićević Marko Marković Objektno orijentisano programiranje Aleksandra Klašnja-Milićević Marko Marković Teme koje će biti obrađene Uvod i koncepti OOP Klase Nasleđivanje Interfejsi Modifikatori, kreiranje instance klase, uništavanje

More information

12. Uskladištene procedure (Stored Procedures)

12. Uskladištene procedure (Stored Procedures) 12. Uskladištene procedure (Stored Procedures) Uskladištena procedura je skup SQL iskaza koji su kompajlirani i sačuvani u trenutku njenog kreiranja. Veoma su moćne i preko njih mogu da se izvršavaju sve

More information

VEŽBA 5 do while petlja, switch case

VEŽBA 5 do while petlja, switch case VEŽBA do while petlja, switch case Petlja sa ulaznim uslovom do while U slučaju do while petlje obavezno izvršavanje bar jedne iteracije se postiže tako što je upravljački izraz petlje na samom dnu petlje.

More information

PHP? PHP (recursive acronym "PHP: Hypertext Preprocessor") Open Source general-purpose scripting language Web development

PHP? PHP (recursive acronym PHP: Hypertext Preprocessor) Open Source general-purpose scripting language Web development Intro to PHP PHP? PHP (recursive acronym "PHP: Hypertext Preprocessor") Open Source general-purpose scripting language Web development Ugrađen u HTML. HTML script sa kodom koji nešto radi Izvršavanje na

More information

Objektno Orijentisano Programiranje - C++

Objektno Orijentisano Programiranje - C++ Elektronski fakultet u Nišu Objektno Orijentisano Programiranje - C++ Prof. Dragan Janković Elementi standardnog C++ okruženja Faze u razvoju C++ programa: Editor Preprocessor Disk Disk Program je kreiran

More information

Internet programiranje JavaScript - školska 2017/2018

Internet programiranje JavaScript - školska 2017/2018 Internet programiranje JavaScript - školska 2017/2018 Dražen Drašković, Elektrotehnički fakultet u Beogradu Sanja Delčev, Elektrotehnički fakultet u Beogradu Zašto JavaScript Nedostatak HTML strana je

More information

Objektno orijentisano programiranje 2. Jezik C#

Objektno orijentisano programiranje 2. Jezik C# Objektno orijentisano programiranje 2 Primer programa Program se sastoji od definicije tipova unutar odgovarajućih prostora imena Primer: using System; public class Pozdrav{ public static void Main(){

More information

/*#include <iostream> // Prvi zadatak sa integralnomg ispita

/*#include <iostream> // Prvi zadatak sa integralnomg ispita /*#include // Prvi zadatak sa integralnomg ispita 27.01.2015 #include using std::setw; using std::cout; const int red(5), kolona(4); void unos(int[]); void ispis(int[][kolona]); float

More information

[] znači opciono; znači ili. Strana 3 od 5

[] znači opciono; znači ili. Strana 3 od 5 Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 2-1 Columns Characters and Rows Concatenation (pridruživanje) stanje povezanosti kao kod lanca; unija

More information

Numerical Computation

Numerical Computation GNU Octave Numerical Computation vrlo često u tehnici retko stvarni problemi imaju closed-form solution čak i kad imaju, pitanje upotrebljivosti mnogo detalja numerički pristup u početku tretirano kao

More information

Programiranje 2. Odsek za Softversko inženjerstvo. Elektrotehnički fakultet Beograd

Programiranje 2. Odsek za Softversko inženjerstvo. Elektrotehnički fakultet Beograd Programiranje 2 Odsek za Softversko inženjerstvo Elektrotehnički fakultet Beograd UVOD Literatura: Laslo Kraus, Programski jezik C sa rešenim zadacima, Akademska misao, 9. izdanje, Beograd, 2014. Laslo

More information

Programski jezik JAVA PREDAVANJE

Programski jezik JAVA PREDAVANJE Programski jezik JAVA PREDAVANJE 8 2018 www.etf.ac.me Polja za potvrdu i Radio tasteri Polja za potvrdu i radio tasteri nijesu uzajamno isključivi, što znači da ako imate pet polja za potvrdu u jednom

More information

x y = z Zadaci - procedure

x y = z Zadaci - procedure Zadaci - procedure Zad1. Data je kvadratna meta u koordinatnom sistemu sa koordinatama A(0,0), B(1,0), C(1,1), D(0,1). Sastaviti proceduru Gadjanje koja će odrediti broj poena na sledeći način: ako je

More information

Ime ograničenja je clients_client_num_pk. Ono inforsira biznis pravila po kojem client_number je PK u clients tabeli Naming Constraints

Ime ograničenja je clients_client_num_pk. Ono inforsira biznis pravila po kojem client_number je PK u clients tabeli Naming Constraints Database Programming with SQL kurs 2017 database design and programming with sql students slajdovi 14-1 Intro to Constraints; NOT NULL and UNIQUE Constraints Ograničenja (constraints) se koriste za sprečavanje

More information

Java IMI PMF KG OOP 09 AKM. Objekti i klase

Java IMI PMF KG OOP 09 AKM. Objekti i klase Java 1 Objekti i klase Usage Modifiers 2 Uz varijable je moguće koristiti modifikatore static -označava varijablu koja je zajednička svim objektima koji su instance date klase final -definiše konstante

More information

Informacioni sistemi i baze podataka

Informacioni sistemi i baze podataka Fakultet tehničkih nauka, Novi Sad Predmet: Informacioni sistemi i baze podataka Dr Slavica Kordić Milanka Bjelica Vojislav Đukić Rad u učionici (1/2) Baze podataka (db2015): Studentska korisnička šema

More information

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 08 Zvonimir Bujanović Slaven Kožić Vinko Petričević Uvod: (X)HTML i CSS Na ovim i idućim vježbama naučit ćemo osnove jezika za opisivanje

More information

VHDLPrimeri Poglavlje3.doc. end process seq; Slika 3.1: Anatomija osnovne definicije test bench-a

VHDLPrimeri Poglavlje3.doc. end process seq; Slika 3.1: Anatomija osnovne definicije test bench-a 3. Verifikacija projekta - Test bench entity TestBench is end entity TestBench; architecture TB_Arhitektura of TestBench is component UUT (Arhitektura_UUT) port( end component UUT; prazan entitet -- deklarisanje

More information

... ; ako je a n parno. ; ako je a n neparno

... ; ako je a n parno. ; ako je a n neparno Zadaci vezani za ciklus sa preduslovom (WHILE) Zad. Napisati program za izračunavanje n_tog stepena broja a. Zad2. Napisati program za izračunavanje sume S kvadrata parnih i kubova neparnih prirodnih brojeva

More information

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb, 13.04.2017. Podešavanje Hyper-V Servera 2016 za RSAT upravljanje Dario Štefek Lokacije za preuzimanje: Microsoft Hyper-V Server 2016 https://www.microsoft.com/en-us/evalcenter/evaluate-hyper-v-server-2016

More information

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se biti u mogućnosti: Opisati ograničenja Generisati i održavati ograničenja u bazi

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se biti u mogućnosti: Opisati ograničenja Generisati i održavati ograničenja u bazi Ograničenja Ciljevi Poslije kompletiranja ove lekcije trebalo bi se biti u mogućnosti: Opisati ograničenja Generisati i održavati ograničenja u bazi Generisati i održavati ograničenja u bazi podataka Uvod

More information

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end;

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end; {*Na Evroviziji je ucestvovalo n izvodjaca. Koji od njih je osvojio najvise glasova publike?*} program Evrovizija; glasovi:array[1..50] of integer; max,k:integer; writeln('unosi se broj izvodjaca:'); writeln('unose

More information

operativni sistem part 2

operativni sistem part 2 operativni sistem part 2 zagrevanje... update komandna linija, nastavak... mnoštvo programa (jezik se zaboravlja ako se ne govori) scripting, bash, sh malo uvoda u Python, IDLE, idle malo C (ni)malo IDE,

More information