Programski Jezik Java
description
Transcript of Programski Jezik Java
![Page 1: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/1.jpg)
Primena integrisanih razvojnih alatamr Boban Vesin
Petak: I čas: 15:50 - 16:35II čas: 16:45 - 17:30III čas: 17:40 - 18:25
![Page 2: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/2.jpg)
2
Programski jezik Java
Opšta sintaksa samostalne aplikacije u Javi:
class <classname> {
public static void main(String args[]){izrazi;————————;————————;
}
}
![Page 3: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/3.jpg)
3
Primer Java programa
class HelloWorldApp {
public static void main(String[] args) {
// ispis stringa.System.out.println("Hello World!");
}
}
Program koji ispisuje “Hello World”
![Page 4: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/4.jpg)
4
Programski jezik Java
Kompajliranje:javac HelloWorldApp.java
Kompajler generiše fajl:HelloWorldApp.class
Pokretanje programa:java HelloWorldApp
![Page 5: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/5.jpg)
5
Osnovni elementi
Osnovni elementi Jave pomoću kojih se komponuju složenije konstrukcije jezika: Identifikatori Literali Specijalni simboli Rezervisane reči
![Page 6: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/6.jpg)
6
Identifikatori Koriste se za označavanje različitih
konstrukcija programa: promenjivih, metoda, klasa, interfejsa, metoda,...
Niz slova i/ili cifara koji počinje slovom i razlikuje se od svake rezervisane reči Slova su sva slova, “$” i “_” Cifre su 0,1,2,...,9
Primeri: ime_i_prezime, temp, var2sp, upisiBroj
![Page 7: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/7.jpg)
7
Literali Literale u Javi čine:
Brojevi 234 3.14 4.0E-74
znakovne konstante ‘h’
stringovske konstante “Novi Sad”
logičke konstante true i false konstanta null
![Page 8: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/8.jpg)
8
Specijalni simboli> veće | disjunkcija i disjunkcija nad
bitovima
< manje ^ eksluzivna disjunkcija
! negacija % ostatak pri deljenju
~ negacija nad bitovima << pomeranje bitova u levo
? uslovni operator >> pomeranje bitova u desno
== jednako >>> pomeranje bitova u desno
<= manje ili jednako = operator dodele
>= veće ili jednako += dodela sa prethodnim sabiranjem
!= nejednako -= dodela sa prethodnim oduzimanjem
&& uslovna konjukcija *= dodela sa prethodnim množenjem
|| uslovna disjunkcija /= dodela sa prethodnim deljenjem
++ povećanje vrednosti za jedan &= dodela sa prethodnom primenom &
-- smanjenje vrednosti za jedan |= dodela sa prethodnom primenom |
+ sabiranje ili predznak ^= dodela sa prethodnom primenom ^
- oduzimanje ili predznak %= dodela sa prethodnom primenom %
* množenje <<= dodela sa prethodnom primenom <<
/ deljenje >>= dodela sa prethodnom primenom >>
& konjunkcija i konjunkcija nad bitovima
>>>=
dodela sa prethodnom primenom >>>
![Page 9: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/9.jpg)
9
Rezervisane reči
Koriste se za opis naredbi programa i imaju tačno određeno značenje
abstract default if package thisboolean do implements private throwbreak double import protected throwsbyte else instanceof public transientcase extends int return nulltry const for new switch strictfpcontinue while goto synchronized supercatch final interface short voidchar finally long static volatileclass float native assert
![Page 10: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/10.jpg)
10
Pravila imenovanja: Nazivi promenjivih: sadrže slova,
brojeve, ‘$’ (simbolom dolara), ili ‘_’ (donjom crtom); ne smeju početi sa cifrom
Nazivi metoda: glagoli zapisani sa malim početnim slovom, svaka naredna reč naziva se piše velikim početnim slovom Primer: promeniBojuOkvira()
Nazivi klasa i interfejsa: Opisni nazivi sa velikim početnim slovom
Nazivi konstanti: Velikim slovim Primer: Font.BOLD, Font.ITALIC
![Page 11: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/11.jpg)
11
Komentari
Delovi programa koji ne utiču na smisao i suštinu programa i zenemaruju se prilikom prevođenja
Simboli Upotreba
// Od simbola do kraja reda pretvara u komentar
/* ————— */ komentar na proizvoljnom mestu u kodu
/** —————*/ Komentar za automatsko generisanje dokumentacije programa
![Page 12: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/12.jpg)
12
Prosti tipovi podataka Celobrojni
int short long byte
Realni brojevi float double
Znakovni char
Logički boolean
![Page 13: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/13.jpg)
13
Prosti tipovi podataka
Prosti tip Veličina Minimum Maximum
boolean — — —
char 16-bit Unicode 0 Unicode 216- 1
byte 8-bit -128 +127
short 16-bit -215 +215—1
int 32-bit - 231 +231—1
long 64-bit -263 +263—1
float 32-bit IEEE754 IEEE754
double 64-bit IEEE754 IEEE754
void — — —
![Page 14: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/14.jpg)
14
Prosti tipovi i promenjive Jedini tipovi podataka koji nisu objekti Nije potrebno kreirati novu promenjivu
sa operatorom new Ostali objekti se moraju kreirati uz
pomoć operatora new Ako promenjivoj nije dodeljena
vrednost pre njene upotrebe, kompajler će javiti grešku
Java inicijalno postavlja vrednosti prostih promenjivih na nulu ili na false u slučaju promenjive tipa boolean
![Page 15: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/15.jpg)
15
Deklaracija promenjivih
Deklaracija promenjivih:<tip podataka> <naziv promenjive>Primer: int num1;
Inicijalizacija promenjivih:< tip podataka > < naziv promenjive > = vrednost
Primer: double num2 = 3.1419;
float initVal;
int pom, index = 2;
double gamma = 1.2, brightness;
boolean valueOk = false;
![Page 16: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/16.jpg)
16
Deklaracija promenjivihint index = 1.2; boolean retOk = 1;double fiveFourths = 5 / 4; float ratio = 5.8f;double fiveFourths = 5.0 / 4.0;
1.2f predstavlja float vrednost sa tačnošću od 7 decimala
1.2 predstavlja double vrednost sa tačnošću od 15 decimala
Boolean prekinut = false;
naziv tipanaziv promenjive
vrednost
![Page 17: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/17.jpg)
17
Deklaracija promenjivihint index = 1.2; // greškaboolean retOk = 1; // greškadouble fiveFourths = 5 / 4; // nema greškefloat ratio = 5.8f; // ispravnodouble fiveFourths = 5.0 / 4.0; // ispravno
1.2f predstavlja float vrednost sa tačnošću od 7 decimala
1.2 predstavlja double vrednost sa tačnošću od 15 decimala
![Page 18: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/18.jpg)
18
Konstante
U Javi promenljiva se može učiniti konstantnom pomoću ključne riječi final
Na primer: final int X = 3;
final int MAX = 9;
final float PI = 3.14;
![Page 19: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/19.jpg)
19
Naredba dodele
x = 1; // promenjivoj x dodeljujemo vrednost 1
++a; // a = a + 1
b--; // b = b + 1
Pom = a + b;
d*=5; // d = d * 5
![Page 20: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/20.jpg)
20
Razlika između i++ i ++i
class PrePostDemo {public static void main(String[] args){
int i = 3;i++;System.out.println(i); // "4"++i;System.out.println(i); // "5"System.out.println(++i); // "6"System.out.println(i++); // "6"System.out.println(i); // "7"
}}
![Page 21: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/21.jpg)
21
Naredba dodele
int x = 5;
int y = 2;
int z = 4;
z = z/y;
x = x*y + z;
y = x*(y + z);
System.out.println(z);
System.out.println(x);
System.out.println(y);
![Page 22: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/22.jpg)
22
Naredba dodele
public class Demo {
public static void main (String[] arg) {
boolean b;
b = (2 + 2 == 4);
System.out.println(b);
}
}
![Page 23: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/23.jpg)
23
Razlika između i++ i ++ipublic class AutoInc {
public static void main(String[] args) {int i = 1;prt("i : " + i);prt("++i : " + ++i); // Pre-incrementprt("i++ : " + i++); // Post-incrementprt("i : " + i);prt("--i : " + --i); // Pre-decrementprt("i-- : " + i--); // Post-decrementprt("i : " + i);
}static void prt(String s) {
System.out.println(s);}
} Rezultat izvođenja programa je:i : 1++i : 2i++ : 2i : 3--i : 2
![Page 24: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/24.jpg)
24
Naredba dodele
class ArithmeticDemo {public static void main (String[] args){
int result = 1 + 2; // rezultat je 3System.out.println(result);result = result - 1; // rezultat je 2System.out.println(result);result = result * 2; // rezultat je 4System.out.println(result);result = result / 2; // rezultat je 2System.out.println(result);result = result + 8; // rezultat je 10result = result % 7; // rezultat je 3System.out.println(result);
}}
![Page 25: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/25.jpg)
25
Primer programa
import java.util.*;
public class HelloDate {public static void main(String[] args) {
System.out.println(“Pozdrav, sad je: ");
System.out.println(new Date());}
}
![Page 26: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/26.jpg)
26
Izrazi & Blokovi Izraz je komanda koja se završava sa “;”:ime = “Fred”;
Blok je niz izraza koji se nalaze između vitičastih zagrada:{
ime1 = “Fred”; ime2 = “Rale”;
} Blokovi mogu sadržati druge blokove
![Page 27: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/27.jpg)
27
Primer 1
public class KonverzijaDaljina {
public static void main(String[] args) {
float duzinaMilje; // vrednost duzine u miljamafloat duzinaKilometri; // vrednost duzine u kilometrima
// konverzija 5 km u milje i stampanje rezultata
duzinaKilometri = 5.0;duzinaMilje = duzinaKilometri * 0.6214;System.out.println("5 km = " + duzinaMilje + " milja");
// Konverzija 5 milja u kilometre i stampanje rezultata
duzinaMilje = 5.0;duzinaKilometri = duzinaMilje * 1.609;System.out.println("5 milja = " + duzinaKilometri + "
km");}
}
![Page 28: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/28.jpg)
28
Primer 2import java.util.Scanner; // programu je potrebna Scanner klasapublic class AddTwoInts {
public static void main(String[] args) {
int prviBroj;int drugiBroj;int suma;
Scanner consoleIn;consoleIn = new Scanner( System.in );
System.out.print(“Unesite prvi broj: ");prviBroj = consoleIn.nextInt();
System.out.print(“Unesite drugi broj: ");drugiBroj = consoleIn.nextInt();
sum = prviBroj + drugiBroj;System.out.println(“Zbri je: " + suma);
}}
![Page 29: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/29.jpg)
2. časGrananje, petlje
![Page 30: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/30.jpg)
30
Kontrola toka programa Java izvršava izraz za izrazom u redu
u kojem su zapisani Postoji više Java naredbi koje služe sa
kontrolu toka programa:
Naredbe grananja: if, if else, switchPetlje: for, while, do while
Naredbe prekida: break, continue, return
![Page 31: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/31.jpg)
31
Kontrola toka programa
Kontrola toka programa:if – elseswitch – casereturnwhiledo – whileforbreakcontinue
• Naredbe:try – catch – finallythrow
![Page 32: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/32.jpg)
32
If – naredba grananja if naredba utvrđuje istinitost izraza u
zagradi i ako je tačna izvršavaju se zadate akcije
if ( x < 10 ) x = 10;
Ako je vrednost promenjive x manja od deset tada se promenjivoj dodeljuje vrednost 10
Moguće je zapisati i:if ( x < 10 )
x = 10;
Ili:if ( x < 10 ) { x = 10; }
![Page 33: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/33.jpg)
33
Relacioni operatori
== jednakost!= nejednakost>= veće ili jednako<= manje ili jednako> veće< manje
![Page 34: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/34.jpg)
34
If naredba
If...else izraz sintaksa:
if(uslov){
izrazi;
} else{
izrazi;
}
![Page 35: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/35.jpg)
35
if… else if … else izraz ispituje tačnost izraza.
Izvršava se jedan niz naredbi ako je vrednost true ili drugi niz naredbi ako je vrednost false. if (x != oldx) {
System.out.print(“x je promenjena”);
}
else {
System.out.print(“x nije promenjena”);
}
![Page 36: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/36.jpg)
36
Ugnježdeni if … else
if ( myVal > 100 ) {if ( remainderOn == true) {
myVal = mVal % 100;}else {
myVal = myVal / 100.0;}
}else{System.out.print(“myVal is in range”);
}
![Page 37: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/37.jpg)
37
else if Koristan za izbor između više mogućnosti:
if ( n == 1 ) {// izvršavanje prvog bloka naredbi
}else if ( j == 2 ) {// izvršavanje drugog bloka naredbi
}else {//ako ni jedan od predhodnih uslova nije //zadovoljen vrši se izvršavanje trećeg //bloka naredbi
}
![Page 38: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/38.jpg)
38
Upozorenje…
Neispravno!if( i == j )
if ( j == k )System.out.print(“i je jednako k”);
else System.out.print( “i nije jednako j”);
Ispravno!if( i == j ) {if ( j == k )System.out.print(“i jednako k”);
}else{System.out.print(“i nije jednako j”);
}
![Page 39: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/39.jpg)
39
Primer if naredbe
if (prodaja > 75000){
bonus = 1000;
System.out.println(“Bonus iznosi $1000");
}
System.out.println(“cilj za naredni mesec iznosi: $75000");
![Page 40: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/40.jpg)
40
Primer 2 if naredbe
int x = 5;int y = 7;if (x > y){ System.out.println(x + " je veci od " + y);}else{ System.out.println(x + " nije veci od " + y);}
![Page 41: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/41.jpg)
41
Primer 3 if naredbedouble vrednostProdaje = 0.0;
int brojProdaja = 0;
if (vrednostProdaje >= 85000 || brojProdaja > 10){
System.out.println(“Vas bonus je: $2,000.");
}
if ( brGodina < 19 && ocena >= 3.0 ){
System.out.println(“primljeni ste");
}
![Page 42: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/42.jpg)
42
Primer 4 if naredbe
if( grade > 90 ){
System.out.println(“Odlicno!");
}else if( grade > 60 ){
System.out.println(“Vrlo dobro!");
}else{
System.out.println(“Zao nam je, pali ste");
}
![Page 43: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/43.jpg)
43
Zadaci if Napisati program koji traži od korisnika da
unese iznos svoje mesečne plate. Ako je plata veća od 75000, program treba da ispiše poruku o bonusu u iznosu od 1000 dinara. Ako je plata manja od 75000, program treba da ispiše poruku o bonusu od 2000 dinara
Napisati program koji traži od korisnika da unese dva broja i kao rezultat ispisuje manji od ta dva.
Napisati program koji traži od korisnika da unese ime i godine starosti deteta kao i rezultat testa. Ako je ili broj godina veće od šest ili rezultat testa veći ili jednak od 85, program treba da ispiše poruku da je dete spremno za prvi razred. Inače, treba ispisati poruku da dete treba da pokusa naredne godine
![Page 44: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/44.jpg)
44
switch naredba Sintaksa switch naredbe:
switch(promenjiva){// promenjiva ima celobrojnu ili logicku //vrednostcase(vrednost1):
izrazi;break;
case(vrednost2):izrazi;break;
...default:
izrazi;break;
}
![Page 45: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/45.jpg)
45
switch naredbaswitch ( n ) {
case 1: // izvršavanje prvog bloka naredbibreak;
case 2:// izvršavanje drugog bloka naredbibreak;
default: // ako ni jedan od predhodnih uslova
//nije zadovoljen vrši se izvršavanje
//trećeg bloka naredbibreak;
}
![Page 46: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/46.jpg)
46
Zadaci Switch Napisati program koji od korisnika traži unos
dva realna broja a zatim obavlja operaciju u zavisnosti od izbora korisnika. Od korisnika se traži izbor jedne od narednih opcija: zbir, razlika, proizvod, količnik. Pomoć: od korisnika se traži unos broja: 1 za zbir, 2 za razliku, 3 za proizvod, 4 za količnik. Potrebno je koristiti promenjivu tipa int koja će primiti odgovarajuću vrednost
Napisati program koji učitava godinu studija studenta u obliku celog broja i zatim štampa da li je student brucoš, student druge godine, student treće godine ili apsolvent u zavisnosti da li je unet broj 1, 2, 3 ili 4. ponuditi rešenje uz pomoć if naredbe kao i uz switch.
![Page 47: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/47.jpg)
47
for petlja
Sintaksa for petlje:
for(inicijalizacija; uslov; inkrement){
izrazi;
}
![Page 48: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/48.jpg)
48
for petlja Izvršavanje n puta
for ( i = 0; i < n; i++ ) {// ovaj deo petlje će se izvršiti n puta// i ide od 0 do n-1
}
Ugnježdeni for:
for ( j = 0; j < 10; j++ ) {for ( i = 0; i < 20; i++ ){
// ovaj deo petlje će se izvršiti 200 puta}
}
![Page 49: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/49.jpg)
49
Primer 1. for petlja
int i;
for( i = 0; i < 10; i++ ){
System.out.println(i);
}
![Page 50: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/50.jpg)
50
Primer 2 for petlja
Napisati program u koji ispisuje sve parne brojeve od 1 do 30
public class parniDo30{
public static void main(String[] args){
System.out.println("parni od 1 do 30 su:");
for (int i = 2 ; i <= 30 ; i += 2){
System.out.println(i);
}
}
}
![Page 51: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/51.jpg)
51
while petlja
Sintaksa while petlje
while(uslov){
izrazi;
}
![Page 52: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/52.jpg)
52
while petljawhile(response == 1) {System.out.print( “ID =” + userID[n]);n++;response = readInt( “Enter“);
}
Moguće je da se telo petlje ni jednom ne izvrši!
![Page 53: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/53.jpg)
53
Primer while naredbe
int x = 0;
while (x<10) {
System.out.println(x);
x++;
}
![Page 54: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/54.jpg)
54
do while petlja
Sintaksa do...while petljedo{
izrazi;
}while(uslov); Primer:int x = 1;
do {
System.out.println(x);
x++;
}while (x<10);
![Page 55: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/55.jpg)
55
do while petljado {
System.out.print( “ID =” + userID[n] );
n++;
response = readInt( “Enter ” );
}while (response == 1);
Telo petlje će se bar jednom izvršiti!
![Page 56: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/56.jpg)
56
break naredba
break naredba izvršava bezuslovni izlazak iz while, do, for ili switch petlje
for ( int i = 0; i < maxID, i++ ) {
if ( userID[i] == targetID ) {
index = i;
break;
}
} // program jumps here after break
![Page 57: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/57.jpg)
57
continue Može se koristiti samo uz while, do ili for. Uzrokuje da petlja bezuslovno pokrene
narednu iteraciju
for ( int i = 0; i < maxID; i++ ) {
if ( userID[i] != -1 ) continue;
System.out.print( “UserID ” + i + “ :” + userID);
}
![Page 58: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/58.jpg)
58
Primer while naredbe
Fibonacci: class Fibonacci {
public static void main(String[] arg) {
int lo = 1;
int hi = 1;
System.out.println(lo);
while (hi < 50) {
System.out.println(hi);
hi = lo + hi;
lo = hi – lo;
}
}
}
![Page 59: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/59.jpg)
Treći časMetodi i nizovi
![Page 60: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/60.jpg)
60
Primer switchclass SwitchDemo {
public static void main(String[] args) { int month = 8; switch (month) {
case 1: System.out.println("January"); break; case 2: System.out.println("February"); break; case 3: System.out.println("March"); break; case 4: System.out.println("April"); break; case 5: System.out.println("May"); break; case 6: System.out.println("June"); break; case 7: System.out.println("July"); break; case 8: System.out.println("August"); break; case 9: System.out.println("September"); break; case 10: System.out.println("October"); break; case 11: System.out.println("November"); break; case 12: System.out.println("December"); break; default: System.out.println("Invalid month.");break;
} }
}
![Page 61: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/61.jpg)
61
Primer whileclass WhileDemo {
public static void main(String[] args){
int count = 1;
while (count < 11) {
System.out.println(count);
count++;
}
}
}
![Page 62: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/62.jpg)
62
Primer do whileclass DoWhileDemo {
public static void main(String[] args){
int count = 1;
do {
System.out.println(count);
count++;
} while (count <= 11);
}
}
![Page 63: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/63.jpg)
63
Primer forclass ForDemo {
public static void main(String[] args){ for(int i=1; i<11; i++){ System.out.println(i); }
} }
12345678910
![Page 64: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/64.jpg)
64
Metodi Metod predstavlja imenovani segment koda
koji se može pokrenuti u drugom delu koda. Metod preuzima neke parametre, izvršava
neka izračunavanja ili akcije i opciono vraća neku povratnu vrednost
Pozivi metoda se mogu koristiti deo izraza
public float convertCelsius(float tempC) {return( ((tempC * 9.0f) / 5.0f) +
32.0 );}
![Page 65: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/65.jpg)
65
Metodi Deklaracija metoda:<kvantifikator pristupa> <static/final> <povratni tip> <naziv metoda> <lista argumenata>
{telo metoda;
}
Primer:public static void main(String args[]){
//telo metoda}
![Page 66: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/66.jpg)
66
Obavezni delovi metode
Jedini obavezni delovi deklaracije metoda su: Povratni tip Naziv metode Par običnih zagrada Telo metode oukvireno vitičastim
zagradama
primer:void prikazi (){
}
![Page 67: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/67.jpg)
67
Svih šest komponenata: Modifikatori - public, private Povratni tip – tip vrednosti koju metod vraća
kao svoj rezultat ili void ako ne vraća nikakvu vrednost
Naziv metoda – koje će jasno objasniti funkciju metoda
Lista parametara u običnim zagradama, razdvojenih zarezom, predsavljenih tipom i imenom. Ako metod nema parametara ostavljaju se prazne zagrade
Lista izuzetaka Telo metode, ograničeno vitičastim
zagradama. Sadrži kod metoda zajedno sa deklaracijom lokalnih promenjivih
![Page 68: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/68.jpg)
68
Zaglavlje metoda Zaglavlje metoda sadrži:
Naziv metoda. Tip i naziv svakog argumenta. Tip promenjive (ili objekta) koju metod vraća kao
povratnu vrednost. Izuzetke koje metod obrađuje. Modifikatore za određivanje vidljivosti metoda.
public float convertCelsius (float tCelsius ) {}
public boolean postavi(int i, int j, String name) throws IndexOutOfBoundsException {}
![Page 69: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/69.jpg)
69
Public/private Metode možemo deklarisati kao public
ili private u zavisnosti da li želimo da omogućimo njihovo pozivanje u drugim klasama.
Preporuka je: Da su podaci privatni Da su metode privatne
Dobro definisana komunikacija između klasa pomaže da se eliminišu greške
![Page 70: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/70.jpg)
70
Definisanje metodaSvaki se metod definiše unutar definicije klase:
public class Film {public static int ocenaFilma(int s, int g, int r) {
return s+g+r;}
}
public class Demo {public static void main (String argv[]) {
int scenario = 6, gluma = 9, rezija = 8;prikaziOcenu(scenario, gluma, rezija);
}public static void prikaziOcenu(int s, int g, int r){
System.out.print(“Ocena filma je: ”);System.out.println(Film.ocenaFilma(s, g, r));
}}
![Page 71: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/71.jpg)
71
Primer klase i metoda
Class voce{int grami;int kalorijePoGramu;
int ukupnoKalorija() { return(grami* kalorijePoGramu);}
}
![Page 72: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/72.jpg)
72
Primer 2class Bicikl {
int godiste = 0; int brzina = 0; int stepenPrenosa = 1;
void postaviGodiste(int novaVrednost) { godiste = novaVrednost;
} void promenaStepenaprenosa(int novaVrednost) {
stepenPrenosa = novaVrednost; } void povecajBrzinu(int increment) {
brzina = brzina + increment; } void smanjiBrzinu(int decrement) {
brzina = brzina - decrement; } void stampajStanja() {
System.out.println("godiste: "+godiste);System.out.println("brzina je: "+brzina);System.out.println("stepen prenosa je:
"+StepenPrenosa); }
}
![Page 73: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/73.jpg)
73
Primer 3.// definicija metoda public int mult(int x, int y) { return x * y; }
// deo koda sa pozivom metoda int duzina = 10; int sirina = 5; int area = mult(duzina, sirina);
![Page 74: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/74.jpg)
74
Primer 4.public static void tryPrimitives(int i,
double f, char c, boolean test) { i = i + 10; c = 'z'; if(test) test = false; else test = true; f = 1.5; }
![Page 75: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/75.jpg)
75
Primer 5.public static int stepen(int a, int b){ int i; int total = 1; for(i = 0; i < b; i++) total = total * a; return total; }
int number = 2;int exponent = 4;number = stepen(number, exponent);System.out.println(“nova vrednost je " +
number);
![Page 76: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/76.jpg)
76
Primer 6.public class calculation{ int first, answer;
public void paint (){ first = 34;
calculation();}
public void calculation (){ answer = first * 2;
}}
![Page 77: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/77.jpg)
77
Primer 7.public class Area{
public static void main(String[] args){ int duzina = 10; int sirina = 5; // poziv metoda int povrsina = izracunajPovrsinu(); System.out.println(povrsina);}public static int izracunajPovrsinu(){
int p = duzina * sirina;return p;
} }}
![Page 78: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/78.jpg)
78
ZadatakDat je metod: public int tryPrimitives(int x, int y) {
x = x + 10; y = y + 10; return x; }Koje su vrednosti promenjivih of p, q i r nakon
izvođenja narednog koda? int p = 1;
int q = 2; int r = 5; r = tryPrimitives(p, q);1,2,11
![Page 79: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/79.jpg)
79
Nizovi - array Niz je lista sličnih elemenata Niz ima fiksirani:
naziv tip dužinu
Ove tri stvari se deklarišu prilikom kreiranja niza
Veličina nizova se ne može menjati tokom izvođenja koda
![Page 80: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/80.jpg)
80
mojNiz ima mesta za 8 elemenata Elementima se pristupa uz pomoć
indeksa niza U Javi, prvi element niza je na nultoj
poziciji
3 6 3 1 6 3 4 1mojNiz = 0 1 2 3 4 5 6 7
Nizovi
![Page 81: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/81.jpg)
81
Deklaracija nizova
int mojNiz[];
Deklaracija niza: mojNiz kao niza celih brojeva
mojNiz = new int[8];
Rezerviše u memoriji 8 mesta za cele brojeve kojima pristupamo sa:
mojNiz[0] do mojNiz[7]
Moguće je i kombinovati prethodna dva izraza u jednom:int mojNiz[] = new int[8];
![Page 82: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/82.jpg)
82
Dodeljivanje vrednosti Pristupamo elementima niza uz pomoć
indeksa da bi im dodelili vrednosti:mojNiz[0] = 3;
mojNiz[1] = 6;
mojNiz[2] = 3; ... Moguće je kreirati niz i stovremeno mu
dodeliti vrednosti:
int mojNiz [] = {3, 6, 3, 1, 6, 3, 4, 1};
![Page 83: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/83.jpg)
83
Iteracije kroz nizove for petlja je korisna pri radu sa nizovima:
for (int i = 0; i < mojNiz.length; i++) {
mojNiz [i] = getsomevalue();
}
![Page 84: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/84.jpg)
84
Primer nizaclass ArrayDemo {
public static void main(String[] args) {
int[] niz; // deklarise niz integeraniz = new int[10]; // zauzima memoriju duzine 10niz[0] = 100;…niz[9] = 1000;
System.out.println("Nulti element niza je: " + niz[0]);System.out.println("1. element niza je: " + niz[1]);System.out.println("2. element niza je: " + niz[2]);System.out.println("3. element niza je: " + niz[3]);System.out.println("4. element niza je: " + niz[4]);System.out.println("5. element niza je: " + niz[6]);System.out.println("6. element niza je: " + niz[7]);System.out.println("7. element niza je: " + niz[8]);System.out.println("8. element niza je: " + niz[9]);
System.out.println("5. element niza je: " + niz[5]);}
}
![Page 85: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/85.jpg)
85
Nizovi objekata Elementi nizova ne moraju biti samo prosti
tipovi Integer, double, float, char
Moguće je definisati i nizove objekata: studenata, knjiga, iznajmljivanja
Potrebno je uraditi tri koraka
![Page 86: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/86.jpg)
86
Definisanje nizova objekata1. Deklarisanje nizova
private Student listaStudenata[]; Ovim se definiše se lista studenata
2 .Kreira se niz: listaStudenata = new Student[10]; Ovim se obezbeđuje 10 mesta u memoriji
koji će čuvati reference ka objektima tipa Student
3. Kreiraju se objekti klase Student i dodele se nizu:
listaStudenata[0] = new Student(“Maja", “Perić");
![Page 87: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/87.jpg)
4. časJava klase i Stringovi
![Page 88: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/88.jpg)
88
Primer nizovapublic class PrimerNiza{
public static void main ( String args[] ){
int [] ocene; // deklaracija nizaocene = new int[4];
ocene[0] = 90;ocene[1] = ocene[0] - 12;ocene[2] = 86;ocene[3] = 99;ocene[3]++;
double average = (ocene[0] + ocene [1]+ ocene [2] + ocene [3] ) / 4.0;
}}
![Page 89: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/89.jpg)
89
Primer nizova 2public class ProsekDvadeset{
public static void main ( String args[] ){double brojevi[] = new double[20];
for ( int i = 0; i < brojevi.length; i++ ) brojevi[i] = Math.random();
double suma = 0;for ( int i = 0; i < brojevi.length; i++ )
suma += brojevi[i];
double prosek = suma / brojevi.length;
System.out.println(“Prosek je " + prosek + ".");}
}
![Page 90: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/90.jpg)
90
Primer 3 Primer metoda koji sabira dva broja:
public class MethodsExample1{
public static void main ( String args[] ){ int x = 5; int y = 3; int z = addTwoNumbers(x,y); System.out.println(x+ " + " +y+ " = " +z);
}
public int addTwoNumbers(int num1, int num2){ int sum;
sum = num1 + num2;return sum;
} }
![Page 91: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/91.jpg)
91
Zadaci Napisati program u koji ispisuje sve
parne brojeve od 1 do 30 Napisati program koji zatraži od
korisnika da unese koliko brojeva želi da sabere, zatim dozvoli njihov unos i na kraju ispiše poruku o njihovoj sumi
Napisati program koji pronalazi aritmetičku sredinu od proizvoljnog broja unetih brojeva. Pretpostavimo da se unos brojeva završava kad se unese nula.
Napisati program koji izračunava faktorijel unetog broja
n!= n*(n-1)*(n-2)*...*3*2*1
![Page 92: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/92.jpg)
92
Zadaci Napisati program koji izračunava zbir
prvih n prirodnih brojeva Napisati program koji pronalazi
najmanji od tri uneta prirodna broja Deklarisati niz koji će čuvati brojeve
od jedan do deset. Koristiti petlju za inicijalizaciju
Napisati program koji učitava niz realnih brojeva i zatim u nizu pronalazi najmanji broj
Napisati program koji pronalazi prirodan broj manji od 10000 koji ima najviše delilaca
![Page 93: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/93.jpg)
93
Klase su definicije objekata OOP – objektno orijentisano
programiranje Kod se formira u obliku
definicija klasa Java ih naziva klasama class Svaka definicija klase se nalazi
u posebnom .java fajlu Naziv objekta mora biti isti kao
i naziv fajla
![Page 94: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/94.jpg)
94
Primer klase i metoda 1
Class Voce{int grami;int kalorijePoGramu;
int ukupnoKalorija() { return(grami* kalorijePoGramu);}
}
![Page 95: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/95.jpg)
95
Upotreba objekata Primer: kreiranje nove instance klase
Fruit i pokretanje nekih metoda iz nje
Voce sljiva=new Voce();
int kalorije;
kalorije = sljiva.ukupneKalorije();
Tačka (Dot operator) pruža mogućnost pristupa javnim metodama i podacima iz klase Voce
![Page 96: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/96.jpg)
96
Primer klase i metoda 2Class Tacka{
float x,y;
Tacka(float X, float Y){x = X;y = Y
}
void transliraj(float promenaX, float promenaY){x = x + promenaX;y = y + promenaY;
}
String opis(){return “Tacka sa koordinatama
(”+x+”,”+y+”)”;}
}
![Page 97: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/97.jpg)
97
Primer kreiranja instance klaseClass Program{
public static void main (String[] args)Tacka A;A = new Tacka(1,3);System.out.println(A.opis());
//(1.0, 3.0)A.transliraj(1,2);System.out.println(A.opis());
//(2.0, 5.0)A.x = 0;A.y = 0;System.out.println(A.opis());
//(0.0, 0.0)
}
![Page 98: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/98.jpg)
98
Primer klase i objekataclass Bicikl {
int godiste = 0; int brzina = 0; int stepenPrenosa = 1;
void postaviGodiste(int novaVrednost) { godiste = novaVrednost;
} void promenaStepenaprenosa(int novaVrednost) {
stepenPrenosa = novaVrednost; } void povecajBrzinu(int increment) {
brzina = brzina + increment; } void smanjiBrzinu(int decrement) {
brzina = brzina - decrement; } void stampajStanja() {
System.out.println("godiste: "+godiste");System.out.println("brzina je: "+brzinaSystem.out.println("stepen prenosa je:
"+StepenPrenosa); }
}
![Page 99: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/99.jpg)
99
Klasa koja koristi klasu Biciklclass BicycleDemo {
public static void main(String[] args) {
// kreiramo dva nova objekta tipa bicikl Bicikl bike1 = new Bicikl();
Bicikl bike2 = new Bicikl();
// poziv metoda za te objekte bike1.postaviGodiste(2004); bike1.povecajBrzinu(10); bike1.promenaStepenaPrenosa(2); bike1.stampajStanja(); bike2.postaviGodiste(2006); bike2.povecajBrzinu(10); bike2.promenaStepenaPrenosa(2); bike2.povecajBrzinu(10); bike2.promenaStepenaPrenosa(3); bike2.stampajStanja();
} }
![Page 100: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/100.jpg)
100
Klase class Employee{ public Employee (String n, double s) { name = n; salary = s; } public Employee (String n) { name = n; salary = 0; } public void raiseSalary(double byPercent) { salary *= 1 + byPercent / 100; } public double getSalary() { return salary; } private String name; private double salary;}
Deklaracija klase
Definicija promenjivih
Konstruktor
Overloaded konstruktor
Metod
![Page 101: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/101.jpg)
101
Tri proncipa OOP-a Enkapsulacija
Objekti skrivaju svoje funkcije (metode) i podatke (promenjive klase)
Nasleđivanje Svaka podklasa
nasleđuje sve promenjive svoje nadklase
Polimorfizam Isti interfejs bez
obzira na tipove podataka
vozilo
automotor
Nadklasa
podklasa
nacrtaj() nacrtaj()
![Page 102: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/102.jpg)
102
Nasleđivanje (inheritance) Definicija klase koja nasleđuje sve
atribute i funkcije osnovne klase i definiše specifične atribute i funkcije
Na primer: klasa student nasleđuje klasu osoba i definiše svoje atribute: broj indeksa, semstar, prosečna ocena, itd. , kao i funkcije za pristup i obradu tih atributa koje su karakteristične za objekte te klase
![Page 103: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/103.jpg)
103
Polimorfizam Karakteristika objektno-orijentisanih
programskih jezika da se u okviru klasa definišu funkcije sa istim nazivom i listom parametara, a da se u isto vreme izvršenja programa određuje koja će funkcija biti pozvana u zavisnosti od tipa objekta za koji je pozvana
Polimorfizam i nasleđivanje omogućuju programeru da razvije hijerarhiju klasa koja se može upotrebiti u različitim aplikacijama
![Page 104: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/104.jpg)
104
Overloading Moguće je imati više verzija metode
u klasi sa različitim tipovima i brojem argumenata:
Fruit() {
grami=50;
}
Fruit(a,b) {
grami=a;
cals_per_gram=b;
}
Java bira koji će od metoda pokrenuti u zavisnosti od argumenata
![Page 105: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/105.jpg)
105
Primer overloadingapublic class Overload{
int saberi ( int br1, int br2 ){ return br1 + br2; }
double saberi( double numbr1, double br2 ){ return num1 + num2; }
public static void main ( String args[] ){ int x = saberi(2,3); System.out.println("2 + 3 = " + x);
double y = saberi(2.5,3.1); System.out.println("2.5 + 3.1 = " + y); }
}
![Page 106: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/106.jpg)
106
Konstruktori Kod:
sljiva = new Fruit(); Pokreće metod konstruktor sa kojim
se mogu postaviti neke početne vrednosti
Moguće je i definisati više konstruktora sa različitim listama argumenata: Primer: Fruit(), Fruit(a) ...
![Page 107: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/107.jpg)
107
Šta su klase i objekti?
Klase su šabloni za kreiranje objekata (instanci klasa)
promenjive Promenjive instance Statičke promenjive
Metodi instance statički
![Page 108: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/108.jpg)
108
Primerclass Point {public double x, y;
}Point lowerleft = new Point();Point upperRight = new Point();Point middlePoint = new Point();lowerLeft.x = 0.0; lowerLeft.y = 0.0;upperRight.x = 1280.0; upperRight.y = 1024.0middlePoint.x = 640.0;middlePoint.y = 512.0
![Page 109: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/109.jpg)
109
Zadaci
Napisati metod max() koji prima dva integera i vraća vrednost većeg
Koristiti overloading definisati metod max() koji ima za argumente dva broja tipa float i kao rezultat vraća pvrednost float
![Page 110: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/110.jpg)
110
Stringovi Nizovi karaktera U javi, stringovi su objekti Direktan način deklaracije
stringa:String pozdrav = "Hello world!"; Moguće je kreirati Sting objekat
uz pomoć kvantifikatora new i konstruktora:
char[] pomNiz = {'h', 'e', 'l', 'l', 'o', '.'};String helloString = new String(pomNiz);
System.out.println(helloString);
![Page 111: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/111.jpg)
111
Stringovi
Dužina stringova:
String palindrome = “Ana voli milovana";
int duzina = palindrome.length();
Učitavanje stringa:
Scanner consoleIn = new Scanner(System.in);
System.out.println(“Unesite string: ");
string1 = consoleIn.nextLine();
![Page 112: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/112.jpg)
112
Stringovi
Konkatenacija (spajanje) stringova:
String string1=“prvi ”;
String string2=“drugi”;
string1.concat(string2); ili:String spoj = string1 + string2;
Rezultat je isti:System.out.println(string1);
System.out.println(spoj);
![Page 113: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/113.jpg)
113
Stringovi
Pronalaženje pozicije podstringa:String quote = "All the world’s a stage";
int pos = quote.indexOf("the");
pos dobija vrednost 4
Određivanje podstringa po poziciji
String sub1 = quote.substring(8,12);
sub1 dobija vrednost “world”
![Page 114: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/114.jpg)
114
Primer 1
int godiste = 1985;
String prefiks = “Moje godiste je: ";
String godine = prefiks + godiste;
System.out.println(godine);
Rezultat izvođenja je:Moje godiste je: 1985
![Page 115: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/115.jpg)
115
Primer 2Primer:public class StringDemo {
public static void main(String[] args) { String palindrom = "Dot saw I was Tod";
int duz = palindrom.length();
char[] tempNiz = new char[duz]; char[] niz = new char[duz];
for (int i = 0; i < len; i++) { tempNiz[i] = palindrom.charAt(i); } for (int j = 0; j < len; j++) { niz[j] = tempniz[duz - 1 - j]; } String obrnutiPalindrom = new String(niz); System.out.println(obrnutiPalindrom);
} }
![Page 116: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/116.jpg)
5. časPrimeri, obrada izuzetaka, ostali elementi
![Page 117: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/117.jpg)
117
Primer 1 program koji pronalazi najmanji od tri uneta
prirodna broja import java.util.Scanner;public class Min { public static void main (String[] args) { int a, b, c;
System.out.print ("Uneite tri prirodna broja: ");
Scanner consoleIn = new Scanner(System.in);
a = consoleIn.nextInt(); b = consoleIn.nextInt();c = consoleIn.nextInt();
int min = a; if (b < min) min = b; if (c < min) min = c; System.out.println ("Najmanji je : " + min); }}
![Page 118: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/118.jpg)
118
Primer 2. Program koji učitava tri broja i zatim ih
ispisuje u rastućem rasporedu
import java.util.Scanner;public class Uredi { public static void main (String[] args) { int a, b, c, pom;
System.out.print ("Uneite tri broja: ");Scanner consoleIn = new Scanner(System.in);
a = consoleIn.nextInt(); b = consoleIn.nextInt();c = consoleIn.nextInt();
if (a > b) { pom = a; a = b; b = pom; } if (a > c) { pom = a; a = c; c = pom; } if (b > c) { pom = b; b = c; c = pom; } System.out.println ("Uredjeno: " + a + " "
+ b + " " + c); }
![Page 119: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/119.jpg)
119
Primer 2. Drugo rešenje:
if ( a < b ) { if ( c < a ) System.out.println( c + " " + a + " " + b); else if ( c > b ) System.out.println( a + " " + b + " " + c); else System.out.println( a + " " + c + " " + b); }else { if ( c < b ) System.out.println( c + " " + b + " " + a); else if ( c > a ) System.out.println( b + " " + a + " " + c); else System.out.println( b + " " + c + " " + a);}
![Page 120: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/120.jpg)
120
Primer 3. Deklarisati niz koji će čuvati kvadrate prvih
deset brojeva. Koristiti petlju za inicijalizaciju
public class InicijalizacijaNiza {
public static void main(String[] args) {
System.out.print ("Inicijalizacija niza: "); int niz[] = new int[10]; for (int i=0; i<10; i++){ niz[i]= (i+1)*(i+1); } System.out.println("niz je:"); for (int i=0; i<10; i++) { System.out.print(niz[i]+" "); } }}
![Page 121: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/121.jpg)
121
Primer 4 Napisati program koji učitava niz realnih brojeva i
zatim u nizu pronalazi najmanji broj import java.util.Scanner;public class Min2 { public static void main (String[] vpar) {
int i, dim; Scanner consoleIn = new Scanner(System.in); System.out.print ("Unesite dimenziju niza: ");
dim = consoleIn.nextInt (); double[] niz = new double [dim]; for (i=0; i<dim; i++){ System.out.print ("unesite "+(i+1)+" element: "); niz[i]= consoleIn.nextDouble(); } double min = niz[0]; for (i=1; i<dim; i++) { if (niz[i] < min) min = niz[i]; } System.out.println ("min element je: " + min); }}
![Page 122: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/122.jpg)
122
Statička polja i metodi
Deklarisana pomoću ključne reči static
Mogu se koristiti i bez prethodnog kreiranja instanci klase
Statički metodi ne smeju pristupati poljima koja nisu statička niti smeju pozivati metode koji nisu statički
![Page 123: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/123.jpg)
123
Ključna reč final Modifikator final se može koristiti na
sledećim mestima U zaglavlju deklaracije klase U zaglavlju deklaracije metoda i Prilikom deklaracije promenjive
U zavisnosti gde se koristi ima različitu ulogu: Ako hoćemo da zabranimo nasleđivanje
neke klase tada je definišemo sa final Uz metodu se koristi ako želimo da
dozvolimo nasleđivanje neke klase ali da sprečimo redefinisanje nekog njenog metoda u podklasama
Promenjive koje se neće menjati - konstante
![Page 124: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/124.jpg)
124
Ključna reč this
Koristi se samo unutar metode Vraća referencu na objekat za
koji je metoda pozvana
![Page 125: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/125.jpg)
125
Ključne reči final i thisfinal class Pravougaonik {
public static void main(String[] args) { // klasa za prikaz pravougaonika // stranice paralelne sa x osom // koordinate stranica private float gore, dole, levo, desno; // konstruktor Pravougaonik(float gore, float dole, float levo, float
desno){ this.gore = gore; this.dole = dole; this.levo = levo; this.desno = desno; } float povrsina(){ return (gore - dole)*(desno - levo); } ... }}
![Page 126: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/126.jpg)
126
primerClass Autoput{
private int brojTraka = 3;
final void postaviBrojTraka(int noviBrojTraka){
brojTraka = noviBrojTraka;
}
final int citajBrojTraka(){
return brojTraka;
}
}
![Page 127: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/127.jpg)
127
Obrada izuzetaka
Obrada neželjenih sutacija Deljenje nulom Iznenadni prekid mrežne
komunikacije Pristup nepostojećem elementu niza Nemoguća ekplicitna konverzija ...
Greške koje se ne mogu prepoznati prilikom prevođenja
try-catch i throw naredbe
![Page 128: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/128.jpg)
128
Sintaksa try-catch naredbetry {
// kod gde je moguće da dođe do izuzetka
} catch(NazivKlaseIzuzetka NazivPromenjive) {
// obrada prvog izuetka
} catch(NazivKlaseIzuzetka NazivPromenjive) {
// obrada drugog izuzetka
} catch(NazivKlaseIzuzetka NazivPromenjive) {
// obrada trećeg izuzetka
}
...
![Page 129: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/129.jpg)
129
Primer try-catch naredbeint i = 30;try {
int niz[] = new int[10];niz[i]=7;
catch ( ArrayIndexOutOfBoundsException e ) { System.out.println(“los index niza “);
e.printStackTrace();}
![Page 130: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/130.jpg)
130
Primerimport java.util.Scanner;public class Deljenje { public static void main(String[] args) { int brojilac, imenilac, kolicnik; Scanner consoleIn = new Scanner(System.in); System.out.println("Unesite brojilac: ");
brojilac = consoleIn.nextInt(); System.out.println("Unesite imenilac: "); imenilac = consoleIn.nextInt(); try { kolicnik = brojilac/imenilac; System.out.print("kolicnik je: "+kolicnik); } catch (ArithmeticException e) { System.out.println("Nastupilo deljenje
nulom"); e.printStackTrace()
}
}}
![Page 131: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/131.jpg)
131
Primer throw naredbeif(t == null)
throw new NullPointerException("t = null");
Primer 2:public double korenFunkcije( double A, double B, double C )
throws IllegalArgumentException {
if (A == 0) {
throw new IllegalArgumentException(“A ne sme biti 0 ");
}
else {
double disc = B*B − 4*A*C;
if (disc < 0)
throw new IllegalArgumentException(" Disc < nule ");
return (−B + Math.sqrt(disc)) / (2A);
}
}
![Page 132: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/132.jpg)
132
Paketi Napravljene klase i interfejsi se mogu
grupisati u zasebne celine koje se u javi nazivaju paketi
Svaka klasa pripada tačno jednom paketu
Sve klase i interfejsi u jednom paketu (osim privatnih ugnježdenih klasa i interfejsa) su vidljivi i u svim delovima paketa
Postoje i standardni paketi koji se isporučuju zajedno sa Java prevodiocem
Ti standardni paketi čine Java API (Application Programming Inteface)
![Page 133: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/133.jpg)
133
Paketi
Definicija paketa:
package nazivPaketa;
package MojiPaketi.DiplomskiRad.PrviDeo
Može i bez definicije paketa, tada će sve klase i interfejsi biti pripadati anonimnom paketu
![Page 134: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/134.jpg)
6. časKorisnički interfejs
![Page 135: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/135.jpg)
135
Swing komponente
Za kreiranje Java programa sa grafičkim korisničkim interfejsom
Swing sadrži skup komponenti za izgradnju korisničkog intefejsa i dodavanje interaktivnosti u Java aplikacije. Swing uključuje sve komponente koje su potrebne: tabele, liste, stabla, dugmad i oznake
Swing se isporučuje kao deo Java platforme
![Page 136: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/136.jpg)
136
Basic Controls
Jednostavne komponente koje se prvenstveno koriste za unos od strane korisnika
![Page 137: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/137.jpg)
137
Basic controls
![Page 138: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/138.jpg)
138
Basic controls
![Page 139: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/139.jpg)
139
Basic controls
![Page 140: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/140.jpg)
140
Basic controls
![Page 141: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/141.jpg)
141
Interactive Displays of Highly Formatted Information Komponente za prikazivanje
interakcije koju može korisnik izmeniti
![Page 142: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/142.jpg)
142
Interactive Displays of Highly Formatted Information
![Page 143: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/143.jpg)
143
Interactive Displays of Highly Formatted Information
![Page 144: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/144.jpg)
144
Interactive Displays of Highly Formatted Information
![Page 145: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/145.jpg)
145
Interactive Displays of Highly Formatted Information
![Page 146: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/146.jpg)
146
Uneditable Information Displays Postoje samo da bi ponudile
korisniku informacije
![Page 147: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/147.jpg)
147
Uneditable Information Displays
![Page 148: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/148.jpg)
148
Top-Level Containers
Bar jedna od ovih komponenti mora biti prisutna u aplikaciji
![Page 149: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/149.jpg)
149
Top-Level Containers
![Page 150: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/150.jpg)
150
General-Purpose Containers Kontejneri opšte namene Koriste se u većini sving
aplikacija
![Page 151: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/151.jpg)
151
General-Purpose Containers
![Page 152: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/152.jpg)
152
General-Purpose Containers
![Page 153: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/153.jpg)
153
Special-Purpose Containers Kontejneri sa posebnim ulogama
![Page 154: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/154.jpg)
154
Special-Purpose Containers
![Page 155: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/155.jpg)
155
Special-Purpose Containers
![Page 156: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/156.jpg)
156
Look and feel
Java look and feel
![Page 157: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/157.jpg)
157
Look and feel
Windows look and feel
![Page 158: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/158.jpg)
158
Look and feel
CDE/Motif look and feel
![Page 159: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/159.jpg)
159
Look and feel
Default Alloy look and feel
![Page 160: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/160.jpg)
7. časGrafički korisnički interfejs (gui)
![Page 161: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/161.jpg)
161
Program koji pronalazi prirodan broj manji od 10000 koji ima najviše delilacapublic class NajviseDelilaca { public static void main(String[] args) { int N; // trenutni broj za koji ispitujemo int maxDivisors; // trenutni najveci broj delilaca int numWithMax; // broj sa najvecim brojem delilaca maxDivisors = 1; numWithMax = 1; for ( N = 2; N <= 10000; N++ ) { int D; // broj koji ispitujemo da li je delilac int divisorCount; // broj delitelja broja divisorCount = 0; for ( D = 1; D <= N/2; D++ ) { if ( N % D == 0 ) divisorCount++; } if (divisorCount > maxDivisors) { maxDivisors = divisorCount; numWithMax = N; } } System.out.println("Najveci broj delilaca je " + maxDivisors); System.out.println("Broj sa " + maxDivisors + " delilaca je " +
numWithMax); } }
![Page 162: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/162.jpg)
162
Uvod Korisnički interfejs je upravljan događajima (Event
Driven) U verzijama 1.0 i 1.1 standard je AWT biblioteka
(Abstract Window Toolkit) – biblioteka koja se zasniva na korišćenju komponenti korisničkog interfejsa koje su dostupne na platformi na kojoj se program pokreće
Implementacija AWT komponenti – različita za svaki operativni sistem
Izgled aplikacija – kao da su pisane u bilo kom drugom jeziku na datoj platformi
Od verzije 1.2 standard je Swing biblioteka
![Page 163: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/163.jpg)
163
Abstract Window Toolkit AWT: biblioteka koja obezbjeđuje upotrebu
minimalnog skupa komponenti grafičkog interfejsa, a kojeg posjeduju sve platforme koje podržavaju Javu
izgleda “podjednako osrednje” na svim platformama paketi:
java.awt java.awt.event java.awt.image java.awt.datatransfer
![Page 164: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/164.jpg)
164
Swing napisan “od nule”, u Javi ne oslanja se na operativni sistem, komponente se
samostalno iscrtavaju na ekranu jednako izgleda i radi na svim platformama veliki broj komponenti, tj. nema ograničenja na broj i
tip GUI komponenti koje će ući u biblioteku Look-and-feel: Windows, Motif, Metal, Mac Drag&Drop, rad sa clipboard-om kompletna podrška za Unicode kodnu stranu paketi javax.swing.* nazivi klasa počinju sa Jxxx
![Page 165: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/165.jpg)
165
Event Driven model korisnički interfejs kod GUI aplikacija je upravljan
događajima pišu se metode (obrađivači događaja) koje se izvršavaju
po pojavi nekog događaja korisničkog interfejsa - klik mišem, pritisak tastera i sl.
program ima inicijalizacioni blok i blokove koda koji reaguju na događaje korisničkog interfejsa (obrađivače događaja)
program se ne izvršava linearno (od gore prema dole), nego u određenim vremenskim intervalima: kada se vrši pokretanje aplikacije (inicijalizacija) reakcije na događaje (kada se vrši obrada događaja)
![Page 166: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/166.jpg)
166
Event Driven model (2) inicijalizacioni blok se u Java GUI
programima izvršava počevši od metode main()
događaji se opisuju xxxEvent klasama – za svaku vrstu događaja definisana je posebna klasa
pritisak tastera – KeyEvent klasa pomeranje miša – MouseEvent klasa sve xxxEvent klase nasleđuju klasu Event
![Page 167: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/167.jpg)
167
Event Driven model (3) svaka akcija nad komponentama korisničkog
interfejsa izaziva generisanje objekata klasa naslednica Event klase
ti objekti se prosleđuju objektima klasa naslednica EventListener klase, koje “osluškuju” događaje
“osluškivači” – instance neke od xxxListener klasa, npr.: KeyListener – “osluškivač” za KeyEvent događaj
EventListener-i uvedeni od verzije 1.1.
![Page 168: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/168.jpg)
168
Osnovna struktura GUI aplikacije
izvršavanje programa počinje sa main() funkcijom, kao i svaki drugi Java program
najčešće se u main() funkciji inicijalizuje i glavni prozor aplikacije, koji se potom i prikaže na ekranu
Primer: GUI aplikacija koja otvara prozor
![Page 169: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/169.jpg)
169
Osnovna struktura GUI aplikacijeimport javax.swing.*;public class MainFrame extends JFrame { public MainFrame() { setSize(300, 200); setTitle(“Hello GUI world!”); }}
public class MyApp { public static void main(String[] args) { MainFrame mf = new MainFrame(); mf.setVisible(true); }}
![Page 170: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/170.jpg)
170
Razlika u konstrukciji GUI-ja za Windows i Java aplikacije Windows aplikacije koriste tzv. resurse za definisanje
izgleda korisničkog interfejsa resurs je deklarativni opis izgleda nekog elementa
korisničkog interfejsa ovakav opis se može kreirati u tekstualnoj datoteci
odgovarajućeg formata ili nacrtati primenom odgovarajućeg alata
“vizelna okruženja” za razvoj softvera – programer crta izgled svoje aplikacije
u Javi se izgled korisničkog interfejsa ne definiše deklarativno, pomoću resursa
Java aplikacije svoj korisnički interfejs grade programski, najčešće u toku inicijalizacije prozora
![Page 171: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/171.jpg)
171
Dodavanje komponenti na prozor prilikom konstrukcije objekta klase naslednice JFrame dodaju se
komponente na formu u određenom redosledu
import javax.swing.*;Import java.awt.*;public class MainFrame extends JFrame { public MainFrame() { setSize(300, 200); setTitle(“Hello GUI world”);
// dodajemo komponente na formu: getContentPane().add(bOK, BorderLayout.NORTH); getContentPane().add(bCancel, BorderLayout.SOUTH); } // Elementi na formi su najčešće privatni atributi //klase private JButton bOK = new JButton("OK"); private JButton bCancel = new JButton("Cancel");}
![Page 172: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/172.jpg)
172
Dodavanje komponenti na prozor
![Page 173: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/173.jpg)
173
Prostorni raspored komponenti koriste se layout manager-i instanca neke od xxxLayout klasa različiti layout manager-i iste komponente
raspoređuju na različit način svaki kontejner ima sebi asociran layout
manager standardni layout manager-i:
BorderLayout, CardLayout, FlowLayout, GridLayout, GridBagLayout, BoxLayout, SpringLayout
korisnički definisani layout manager-i
![Page 174: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/174.jpg)
174
Prostorni raspored komponenti Layout manager-i se koriste kako u Swing tako i u AWT
biblioteci (zato imamo import java.awt.*) BorderLayout:
Komponente se postavljaju na centru i bivaju razvučene do samih ivica
EAST WESTCENTER
NORTH
SOUTH
![Page 175: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/175.jpg)
175
Prostorni raspored komponenti BoxLayout:
Horizontalno u jednoj vrsti ili vertikalno u jednoj koloni
![Page 176: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/176.jpg)
176
Prostorni raspored komponenti
FlowLayout: Ređa komponente na način na koji se
prelama tekst
![Page 177: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/177.jpg)
177
Prostorni raspored komponenti GridLayout:
Tabela međusobno jednakih komponenti
![Page 178: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/178.jpg)
178
Prostorni raspored komponenti
GridBagLayout:Formira se tabela međusobno
različitih kolona i vrsti
![Page 179: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/179.jpg)
179
Prostorni raspored komponenti
Apsolutno pozicioniranje Raspoređivač kontejnera se uklanja:
setLayout(null) Zatim se komponente postavljaju sa
metodom:
setBounds(int x, int y, int width int heigh)
![Page 180: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/180.jpg)
180
Rukovanje događajima događaji su predstavljeni objektima xxxEvent klasa, a
osluškivači su odgovarajući xxxListener objekti xxxListener-i su interfejsi => “osluškivač” mora biti
instanca neke klase koja implementira odgovarajući interfejs
import java.awt.*;import java.awt.event.*;
public class MyListener implements ActionListener { public void actionPerformed(ActionEvent ev) { System.exit(0); }}
![Page 181: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/181.jpg)
181
Dodavanje Listener-a komponenta koja obrađuje neki događaj se
prijavljuje pozivom addxxxListener
public class MainFrame extends JFrame { public MainFrame() { ... getContentPane().add(bOK); getContentPane().add(bCancel); // dodajemo reakcije na događaje dugmadima bOK.addActionListener(new MyListener()); bCancel.addActionListener(new MyListener()); } // Elementi na formi su najčešće privatni //atributi
klase private JButton bOK = new JButton("OK"); private JButton bCancel = new JButton("Cancel");}
![Page 182: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/182.jpg)
182
Osluškivači kao unutrašnje klase prozori mogu biti pretrpani komponentama koje obrađuju više
događaja – definicija velikog broja Listener klasa – nepregledan program
Varijanta 2: JButton b = new JButton("Pritisni me"); ActionListener al = new ActionListener() { public void actionPerformed(ActionEvent e) { ... } b.addActionListener(al); Varijanta 3: // najčešća – koristi je i netBeans JButton b = new JButton("Pritisni me"); b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { ... });
![Page 183: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/183.jpg)
183
Komponente
![Page 184: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/184.jpg)
184
Reakcije na događajeTip događaja Dodeljeni Listener
ActionEvent ActionListenerAdjustmentEvent AdjustmentListenerAncestorEvent AncestorListenerComponentEvent ComponentListenerContainerEvent ContainerListenerFocusEvent FocusListenerKeyEvent KeyListenerHierarchyEvent HierarchyListenerMouseEvent MouseListenerWindowEvent WindowListenerItemEvent ItemListenerTextEvent TextListener
![Page 185: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/185.jpg)
8. časApleti
![Page 186: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/186.jpg)
186
Apleti Popularnost jave je najviše posledica Java
apletima Apleti su posebna vrsta Javinih programa koji
se koriste kao delovi Internet prezentacija Zajedno sa ostalim sadržajem HTML stranice
(slike, tekst, linkovi, multi-medijalni sadržaj), Java apleti se transportuju preko mreže i izvršavaju na Internet pretraživačima korisnika
Dok se prozori koriste za kreiranje grafičkih interfejsa koji podržavaju samostalne aplikacije, aplet se od običnog Java programa razlikuje po tome što se on ne može izvršavati samostalno, već mu je za to potreban neki drugi program, kao što je Internet pretraživač
![Page 187: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/187.jpg)
187
Apleti ograničenja:
apleti ne mogu pristupati fajl sistemu računara na kome se izvršavaju
apleti ne mogu uspostaviti mrežnu konekciju sa bilo kojim računarom, osim sa Web serverom sa koga su preuzeti
aplet je klasa koja nasljeđuje klasu Applet (AWT) ili JApplet (Swing)
pisanje apleta – nasleđivanje klase JApplet i redefinisanje odgovarajućih metoda
Najvažnije metode: init() start() stop() paint() destroy()
![Page 188: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/188.jpg)
188
Primer apletaAppletTest.javaimport javax.swing.*;import java.awt.*;
public class AppletTest extends JApplet {
public void init() { getContentPane().add(new JLabel("Applet!"));
}}
![Page 189: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/189.jpg)
189
HTML stranica sa apletomAppletTest.html...<applet code = "AppletTest” width = 200 height = 200></applet>...
index.html...<OBJECT classid="clsid:8AD9C840-044E-11D1-
B3E9-00805F499D93“codebase =
"http://java.sun.com/update/1.5.0/jinstall-1_5-windows-i586.cab#Version=1,5,0,0"
WIDTH = 400 HEIGHT = 400 >...</OBJECT>
![Page 190: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/190.jpg)
190
Primer apleta sa dugmetomJButtonTest.javaimport java.awt.*;import javax.swing.*;public class JButtonTest extends JApplet { JButton b; public void init() { b = new JButton("Pritisni me"); Container cp = getContentPane(); cp.add(b); }} postavljanje komponenti na površinu apleta ne razlikuje se ni po
čemu od postavljanja komponenti na prozor klasične aplikacije
![Page 191: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/191.jpg)
191
Aplet i aplikacija zajedno aplet – osnovna klasa mora naslediti
Japplet klasu aplikacija – mora imati main() 2 in 1:
osnovna klasa nasleđuje JApplet klasu i sadrži main() metodu
![Page 192: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/192.jpg)
192
Korisnički definisane komponente
koriste se u situacijama kada standardne komponente ne mogu da obezbede zadovoljavajuću funkcionalnost
konstruišu se nasleđivanjem neke od standardnih komponenti korisničkog interfejsa
za vizuelne komponente potrebno je redefinisati paint() metodu za iscrtavanje
ako nijedna komponenta nije adekvatna za nasleđivanje, može se koristiti generička komponenta JComponent
![Page 193: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/193.jpg)
193
JavaBeans standard za kreiranje softverskih komponenti
koje imaju svoje osobine i ponašanje i koje se mogu koristiti u okviru RAD alata
svaka JavaBean komponenta ima svojstva (properties) i događaje (events)
JavaBean je svaka Java klasa za koju važi: da ima podrazumevani konstruktor za svaki property xxx moraju da postoje publicpublic
metode setsetXxxXxx()() i getgetXxxXxx()(); ; Za svaki Za svaki eventevent xxxEventxxxEvent moraju da postoje moraju da postoje publicpublic
metode metode addXxxListener(XxxListener)addXxxListener(XxxListener) i i removeXxxListener(XxxListener)removeXxxListener(XxxListener)
![Page 194: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/194.jpg)
9. časKonekcija sa bazom podataka
![Page 195: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/195.jpg)
195
Napisati program koji ispisuje prvih n članova fibonačijevog niza import java.util.Scanner;public class Fibonacci{ public static int fib(int n) { int f1=1, f2=2, temp=0; if (n==1){ return 1; }else if (n==2){ return 2; }else { for(int i=3; i<=n; i++) { temp = f1; f1 = f2; f2 = temp + f2; } return f2; } } public static void main(String[] args) { System.out.println("Do kojeg elementa ispisujemo fibonacijev
niz:"); Scanner consoleIn = new Scanner(System.in); int n = consoleIn.nextInt(); for (int i=1; i<=n; i++) System.out.print(fib(i)+", "); } }
![Page 196: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/196.jpg)
196
Napisati program koji trazi od korisnika da unese rečenicu a zatim je ispisuje u obliku gde su sva početna slova reči velika slova a sva ostala mala.
import java.util.Scanner;public class UpperCase { public static void main(String[] args) { String line; // recenica koju unosi korisnik Scanner consoleIn = new Scanner(System.in); System.out.println("Unesite recenicu:"); line= consoleIn.nextLine(); printCapitalized( line ); } static void printCapitalized( String str ) { char ch; // trenutni karakter u stringu. char prevCh; // karakter koji prethodi trenutnom. int i; // pozicija u stringu, od 0 to str.length()-1. prevCh = '.'; // pocetna vrednost za prethodni karakter // treba da je bilo sta sto nije slovo for ( i = 0; i < str.length(); i++ ) { ch = str.charAt(i); if ( Character.isLetter(ch) && ! Character.isLetter(prevCh) ) System.out.print( Character.toUpperCase(ch) ); else System.out.print(Character.toLowerCase(ch) ); }
prevCh = ch; // trenutni postaje prethodni
} System.out.println();}
![Page 197: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/197.jpg)
197
Konekcija
![Page 198: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/198.jpg)
198
Java SQL pristup bazama Java nudi standardni interfejs za pristup
bazama, JDBC Većina sistema za upravljanje bazama
podataka imaju implementaciju JDBC za svoje baze
Oracle, mySQL,... nude odgovarajući JDBC driver (nema potrebe za instalacijom dodatnih programa).
Omogućeno je pisanje programa koji koriste bazu podataka koji su nezavisni od same baze
![Page 199: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/199.jpg)
199
Java SQL pristup bazama U main klasi za konekciju:
try{Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/ime
baze","root","lozinka"); stmt = conn.createStatement(); }catch(Exception ex){ ex.printStackTrace();}
![Page 200: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/200.jpg)
200
Java SQL pristup bazama
Za zatvaranje konekcije:
try{
conn.close();
}catch(Exception ex){
ex.printStackTrace();
}
![Page 201: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/201.jpg)
201
Java SQL pristup bazama
Postavljanje upita:
String sql="INSERT INTO slonovi (ime, prezime)" + "VALUES ('"+jTextField1.getText()+"', '"+jTextField2.getText()+"')";
try{
if ((jTextField1.getText()!=null)&&(jTextField2.getText()!=null)) {
int rowsAffected = stmt.executeUpdate(sql);
}
}catch(Exception ex){
ex.printStackTrace();
}
![Page 202: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/202.jpg)
202
Podešavanje izgleda aplikacije: U main klasi za XP look:
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
ex.printStackTrace();
}
![Page 203: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/203.jpg)
EXTRA
![Page 204: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/204.jpg)
204
Dokumentacioni komentari - javadoc Počinju sekvencom /**, a završavaju sa
*/ Omogućavaju da informacije o
programu ugradimo u sam program Pomoću komande javadoc vrši se
prikupljanje informacija o programu i smeštanje istih u HTML fajl
Oznake za dokumentaciju koje počinju sa @ nazivaju se samostalne (stand-alone) i moraju stajati u zasebnom redu, npr. @author Boban
Oznake koje počinju vitičastim zagradama nazivaju se unutrašnje (in-line) i mogu se stavljati unutar većih opisa, npr. {@code}
![Page 205: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/205.jpg)
205
Čitanje podataka sa konzole Jednostavnije čitanje podataka sa
konzole može se obaviti korišćenjem klase Scanner
Konstruktor klase Scanner koji se koristi u ovu svrhu ima opšti oblik: Scanner(InputStream is)
Kojim se pravi objekat tipa Scanner koji tok is koristi kao izvor podataka.
Sledeći iskaz pravi objekat tipa Scanner koji podatke čita sa standardnog ulaza, što je podrazumevano tastatura:
Scanner consoleIn = new Scanner(System.in);
Napomena: System.in je objekat tipa InputStream.
![Page 206: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/206.jpg)
206
Primerimport java.util.*;
class UnosBroja{
public static void main(String args[]){
Scanner konzUlaz=new Scanner(System.in);
int broj=0;
System.out.println("Unesite broj: ");
broj = konzUlaz.nextInt();
System.out.println(“Unet je broj: "+ broj);
}
}
![Page 207: Programski Jezik Java](https://reader033.fdocuments.us/reader033/viewer/2022061518/563db833550346aa9a917c65/html5/thumbnails/207.jpg)
207
Interfejsi Ključna riječ interface u Javi koristi se
za potpuno apstrahovanje načina pristupa klasi – tj. možemo reći klasi šta da radi, ali ne i kako.
Interfejsi nemaju promjenljive instanci, a njihove metode nemaju telo.
Klasa može implementirati više interfejsa (ključna riječ implements).
Koriste se za implementaciju višestrukog nasleđivanja.
Interfejsi se mogu proširiti, tj. jedan interfejs može da nasledi drugi pomoću ključne riječi extends