219
Primenjeno programiranje mr Boban Vesin Petak: I čas: 15:50 - 16:35 II čas: 16:45 - 17:30 III čas: 17:40 - 18:25

Primenjeno programiranje

  • Upload
    chyna

  • View
    56

  • Download
    2

Embed Size (px)

DESCRIPTION

Petak: I čas: 15:50 - 16:35 II čas: 16:45 - 17:30 III čas: 17:40 - 18:25. Primenjeno programiranje. m r Boban Vesin. Primenjeno programiranje. Fond časova: 3+2 Broj ESPB: 6 Ocena znanja (max. broj poena je 100) Minimum bodova za prolaz: 28+23. Sadržaj predmeta. - PowerPoint PPT Presentation

Citation preview

Page 1: Primenjeno programiranje

Primenjeno programiranjemr Boban Vesin

Petak: I čas: 15:50 - 16:35II čas: 16:45 - 17:30III čas: 17:40 - 18:25

Page 2: Primenjeno programiranje

2

Primenjeno programiranje Fond časova: 3+2 Broj ESPB: 6 Ocena znanja (max. broj poena je 100) Minimum bodova za prolaz: 28+23

Predispitne obaveze 55 poena

Prisustvo na predavanjima i vežbama 5

Provera znanja u toku nastave 30

Ostale aktivnosti i učešće studenata u radu na predavanjima i vežbama

10

Praktičan rad 10

Završni ispit 45 poena

Pismeni ispit 45

Page 3: Primenjeno programiranje

3

Sadržaj predmeta Razvoj i podele programskih jezika Metode projektovanja programa Klasifikacija tipova podataka Osnovni koncepti sintakse

programskog jezika Tipovi podataka programskog jezika Kontrola programskog toka Objektni koncepti programskog jezika Programiranje grafičkog korisničkog

interfejsa Veza programskog jezika i baze

podataka Kreiranje poslovnih programa

Page 4: Primenjeno programiranje

4

Literatura

Materijal sa predavanja i vežbi za predmet Primenjeno programiranje na sajtu Škole

Lemay L., Cadenhead R., Java Naučite za 21 dan, Kompjuter biblioteka

Eckel B., Mislite na Javi, Mikro knjiga

Dokumentacija sa sajta http://www.netbeans.org/

Page 5: Primenjeno programiranje

5

Tehnologije

Programski jezik: Java

Razvojni alat: NetBeans 6.5

Sistem za upravljanje bazama

podataka: MySql 5.0

Page 6: Primenjeno programiranje

6

NetBeans 6.5

Page 7: Primenjeno programiranje

7

Programski jezici i programiranje

Algoritmi i programiranje Algoritam je konačan, uređen skup,

nedvosmislenih izvršnih koraka za rešavanje određenog problema u konačnom vremenskom periodu sa konačnom količinom podataka

Programski jezici definišu skup instrukcija, njihovu sintaksu (format instrukcije i pravila kombinovanja instrukcija u veće celine) i semantiku instrukcija (značenje instrukcije i akciju u programu koju izvršava)

Program predstavlja sekvencu instrukcija napisanih u nekom programskom jeziku koje se mogu prevesti u instrukcije koje računar može direktno izvršiti (mašinske instrukcije)

Page 8: Primenjeno programiranje

8

Programski jezici Generacije programskih jezika

Mašinski jezik (u binarnom obliku) Asemblerski (simbolički) jezik i

makroasemblerski jezici – simbolične oznake

Proceduralni programski jezici (jezici visokog nivoa, treće generacije): Pascal, c, c++, Java, Basic, C#

Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog nivoa, 4. generacije): Prolog, SQL, generatori programa, itd

Jezici veštačke inteligencije i prirodni programski jezici

Page 9: Primenjeno programiranje

9

Programski jezici Imperativni ili proceduralni

programski jezici FORTRAN, COBOL, Basic, Pascal, Ada

Objektno-orijentisani programski jezici SIMULA, Smaltalk, C++, Java, C#

Deklarativni (logički) programski jezici Prolog

Funkcionalni programski jezici LISP, Scheme, ML

Page 10: Primenjeno programiranje

10

Programski jezik Java U jesen 1995. godine Sun Microsystems

prvi put je predstavio programski jezik Java

Java je objektno-orijentisani, nezavistan od platforme, bezbedan programski jezik,

• Objektno-orijentisano programiranje (OOP) je metodologija razvoja softvera u kojoj se program: konceptualizuje pomoću grupe objekata koji

zajedno funkcionišu objekti se kreiraju korišćenjem šablona - koji

se nazivaju klase. programski jezik Java je u potpunosti

objektno-orijentisan.

Page 11: Primenjeno programiranje

11

Programski jezik Java Platformska nezavisnost je mogućnost

programa da se izvršava bez modifikacija u okviru različitih radnih okruženja. java programi se prevode u format koji se

naziva bajtkod. bajtkod - u okviru bilo kog operativnog

sistema može da izvrši bilo koji softver ili uređaj koji sadrži interpreter programskog jezika Java

Nekoliko popularnih razvojnih okruženja: JBuilder, Eclipse, NetBeans

Java Development Kit - besplatan (http://java.sun.com)

Page 12: Primenjeno programiranje

12

Programski jezik Java Objektno-orijentisano programiranje

je pristup razvoju račuarskih programa koji modeluje objekte iz realnog sveta.

Neophodno je prvo naučiti na koji način Java implementira principe objektno-orijentisanog programiranja: organizovanje programa pomoću

elemenata koji se nazivaju klase i postupak kojim se kreiraju objekti na osnovu klasa

definisanje klase: način na koji treba da se ponaša i atribute koje treba da sadrži.

međusobno povezivanje klasa - nasleđivanje i povezivanje klasa korišćenjem paketa i interfejsa

Page 13: Primenjeno programiranje

13

Programski jezik Java Sav izvorni kod je pisan u tekstualnim

fajlovima sa ekstenizijom: .java Izvorni fajlovi se kompajliranjem

pretvaraju u fajlove sa extenzijom .class .class fajl ne sadrži kod razumljiv

procesoru, on sadrži bajtkod Bajtkod: mašinski jezik Javine virtuelne

mašine (Java Virtual Machine JVM) Java programi se pokreću uz pomoć JVM-e

Page 14: Primenjeno programiranje

14

Programski jezik Java

Opšta sintaksa samostalne aplikacije u Javi:

class <classname> {

public static void main(String args[]){izrazi;————————;————————;

}

}

Page 15: Primenjeno programiranje

15

Primer Java programa

class HelloWorldApp {

public static void main(String[] args) {

// ispis stringa.System.out.println("Hello World!");

}

}

Program koji ispisuje “Hello World”

Page 16: Primenjeno programiranje

16

Programski jezik Java

Kompajliranje:javac HelloWorldApp.java

Kompajler generiše fajl:HelloWorldApp.class

Pokretanje programa:java HelloWorldApp

Page 17: Primenjeno programiranje

17

Osnovni elementi

Osnovni elementi Jave pomoću kojih se komponuju složenije konstrukcije jezika: Identifikatori Literali Specijalni simboli Rezervisane reči

Page 18: Primenjeno programiranje

18

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 19: Primenjeno programiranje

19

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 20: Primenjeno programiranje

20

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 21: Primenjeno programiranje

21

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 22: Primenjeno programiranje

22

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 23: Primenjeno programiranje

23

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 24: Primenjeno programiranje

24

Prosti tipovi podataka Celobrojni

int short long byte

Realni brojevi float double

Znakovni char

Logički boolean

Page 25: Primenjeno programiranje

25

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 26: Primenjeno programiranje

26

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 27: Primenjeno programiranje

27

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 28: Primenjeno programiranje

28

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 29: Primenjeno programiranje

29

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 30: Primenjeno programiranje

30

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 31: Primenjeno programiranje

31

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 32: Primenjeno programiranje

32

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 33: Primenjeno programiranje

33

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 34: Primenjeno programiranje

34

Naredba dodele

public class Demo {

public static void main (String[] arg) {

boolean b;

b = (2 + 2 == 4);

System.out.println(b);

}

}

Page 35: Primenjeno programiranje

35

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 36: Primenjeno programiranje

36

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 37: Primenjeno programiranje

37

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 38: Primenjeno programiranje

38

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 39: Primenjeno programiranje

39

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 40: Primenjeno programiranje

40

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 41: Primenjeno programiranje

2. časGrananje, petlje

Page 42: Primenjeno programiranje

42

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 43: Primenjeno programiranje

43

Kontrola toka programa

Kontrola toka programa:if – elseswitch – casereturnwhiledo – whileforbreakcontinue

• Naredbe:try – catch – finallythrow

Page 44: Primenjeno programiranje

44

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 45: Primenjeno programiranje

45

Relacioni operatori

== jednakost!= nejednakost>= veće ili jednako<= manje ili jednako> veće< manje

Page 46: Primenjeno programiranje

46

If naredba

If...else izraz sintaksa:

if(uslov){

izrazi;

} else{

izrazi;

}

Page 47: Primenjeno programiranje

47

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 48: Primenjeno programiranje

48

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 49: Primenjeno programiranje

49

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 50: Primenjeno programiranje

50

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 51: Primenjeno programiranje

51

Primer if naredbe

if (prodaja > 75000){

bonus = 1000;

System.out.println(“Bonus iznosi $1000");

}

System.out.println(“cilj za naredni mesec iznosi: $75000");

Page 52: Primenjeno programiranje

52

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 53: Primenjeno programiranje

53

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 54: Primenjeno programiranje

54

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 55: Primenjeno programiranje

55

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 56: Primenjeno programiranje

56

switch naredba Sintaksa switch naredbe:

switch(promenjiva){// promenjiva ima celobrojnu ili logicku //vrednostcase(vrednost1):

izrazi;break;

case(vrednost2):izrazi;break;

...default:

izrazi;break;

}

Page 57: Primenjeno programiranje

57

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 58: Primenjeno programiranje

58

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 59: Primenjeno programiranje

59

for petlja

Sintaksa for petlje:

for(inicijalizacija; uslov; inkrement){

izrazi;

}

Page 60: Primenjeno programiranje

60

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 61: Primenjeno programiranje

61

Primer 1. for petlja

int i;

for( i = 0; i < 10; i++ ){

System.out.println(i);

}

Page 62: Primenjeno programiranje

62

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 63: Primenjeno programiranje

63

while petlja

Sintaksa while petlje

while(uslov){

izrazi;

}

Page 64: Primenjeno programiranje

64

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 65: Primenjeno programiranje

65

Primer while naredbe

int x = 0;

while (x<10) {

System.out.println(x);

x++;

}

Page 66: Primenjeno programiranje

66

do while petlja

Sintaksa do...while petljedo{

izrazi;

}while(uslov); Primer:int x = 1;

do {

System.out.println(x);

x++;

}while (x<10);

Page 67: Primenjeno programiranje

67

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 68: Primenjeno programiranje

68

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 69: Primenjeno programiranje

69

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 70: Primenjeno programiranje

70

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 71: Primenjeno programiranje

Treći časMetodi i nizovi

Page 72: Primenjeno programiranje

72

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 73: Primenjeno programiranje

73

Primer whileclass WhileDemo {

public static void main(String[] args){

int count = 1;

while (count < 11) {

System.out.println(count);

count++;

}

}

}

Page 74: Primenjeno programiranje

74

Primer do whileclass DoWhileDemo {

public static void main(String[] args){

int count = 1;

do {

System.out.println(count);

count++;

} while (count <= 11);

}

}

Page 75: Primenjeno programiranje

75

Primer forclass ForDemo {

public static void main(String[] args){ for(int i=1; i<11; i++){ System.out.println(i); }

} }

12345678910

Page 76: Primenjeno programiranje

76

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 77: Primenjeno programiranje

77

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 78: Primenjeno programiranje

78

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 79: Primenjeno programiranje

79

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 80: Primenjeno programiranje

80

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 81: Primenjeno programiranje

81

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 82: Primenjeno programiranje

82

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 83: Primenjeno programiranje

83

Primer klase i metoda

Class voce{int grami;int kalorijePoGramu;

int ukupnoKalorija() { return(grami* kalorijePoGramu);}

}

Page 84: Primenjeno programiranje

84

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 85: Primenjeno programiranje

85

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 86: Primenjeno programiranje

86

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 87: Primenjeno programiranje

87

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 88: Primenjeno programiranje

88

Primer 6.public class calculation{ int first, answer;

public void paint (){ first = 34;

calculation();}

public void calculation (){ answer = first * 2;

}}

Page 89: Primenjeno programiranje

89

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 90: Primenjeno programiranje

90

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 91: Primenjeno programiranje

91

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 92: Primenjeno programiranje

92

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 93: Primenjeno programiranje

93

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 94: Primenjeno programiranje

94

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 95: Primenjeno programiranje

95

Iteracije kroz nizove for petlja je korisna pri radu sa nizovima:

for (int i = 0; i < mojNiz.length; i++) {

mojNiz [i] = getsomevalue();

}

Page 96: Primenjeno programiranje

96

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 97: Primenjeno programiranje

97

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 98: Primenjeno programiranje

98

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 99: Primenjeno programiranje

4. časJava klase i Stringovi

Page 100: Primenjeno programiranje

100

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 101: Primenjeno programiranje

101

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 102: Primenjeno programiranje

102

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 103: Primenjeno programiranje

103

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 104: Primenjeno programiranje

104

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 105: Primenjeno programiranje

105

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 106: Primenjeno programiranje

106

Primer klase i metoda 1

Class Voce{int grami;int kalorijePoGramu;

int ukupnoKalorija() { return(grami* kalorijePoGramu);}

}

Page 107: Primenjeno programiranje

107

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 108: Primenjeno programiranje

108

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 109: Primenjeno programiranje

109

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 110: Primenjeno programiranje

110

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 111: Primenjeno programiranje

111

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 112: Primenjeno programiranje

112

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 113: Primenjeno programiranje

113

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 114: Primenjeno programiranje

114

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 115: Primenjeno programiranje

115

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 116: Primenjeno programiranje

116

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 117: Primenjeno programiranje

117

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 118: Primenjeno programiranje

118

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 119: Primenjeno programiranje

119

Šta su klase i objekti?

Klase su šabloni za kreiranje objekata (instanci klasa)

promenjive Promenjive instance Statičke promenjive

Metodi instance statički

Page 120: Primenjeno programiranje

120

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 121: Primenjeno programiranje

121

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 122: Primenjeno programiranje

122

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 123: Primenjeno programiranje

123

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 124: Primenjeno programiranje

124

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 125: Primenjeno programiranje

125

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 126: Primenjeno programiranje

126

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 127: Primenjeno programiranje

127

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 128: Primenjeno programiranje

5. časPrimeri, obrada izuzetaka, ostali elementi

Page 129: Primenjeno programiranje

129

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 130: Primenjeno programiranje

130

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 131: Primenjeno programiranje

131

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 132: Primenjeno programiranje

132

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 133: Primenjeno programiranje

133

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 134: Primenjeno programiranje

134

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 135: Primenjeno programiranje

135

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 136: Primenjeno programiranje

136

Ključna reč this

Koristi se samo unutar metode Vraća referencu na objekat za

koji je metoda pozvana

Page 137: Primenjeno programiranje

137

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 138: Primenjeno programiranje

138

primerClass Autoput{

private int brojTraka = 3;

final void postaviBrojTraka(int noviBrojTraka){

brojTraka = noviBrojTraka;

}

final int citajBrojTraka(){

return brojTraka;

}

}

Page 139: Primenjeno programiranje

139

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 140: Primenjeno programiranje

140

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 141: Primenjeno programiranje

141

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 142: Primenjeno programiranje

142

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 143: Primenjeno programiranje

143

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 144: Primenjeno programiranje

144

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 145: Primenjeno programiranje

145

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 146: Primenjeno programiranje

6. časKorisnički interfejs

Page 147: Primenjeno programiranje

147

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 148: Primenjeno programiranje

148

Basic Controls

Jednostavne komponente koje se prvenstveno koriste za unos od strane korisnika

Page 149: Primenjeno programiranje

149

Basic controls

Page 150: Primenjeno programiranje

150

Basic controls

Page 151: Primenjeno programiranje

151

Basic controls

Page 152: Primenjeno programiranje

152

Basic controls

Page 153: Primenjeno programiranje

153

Interactive Displays of Highly Formatted Information Komponente za prikazivanje

interakcije koju može korisnik izmeniti

Page 154: Primenjeno programiranje

154

Interactive Displays of Highly Formatted Information

Page 155: Primenjeno programiranje

155

Interactive Displays of Highly Formatted Information

Page 156: Primenjeno programiranje

156

Interactive Displays of Highly Formatted Information

Page 157: Primenjeno programiranje

157

Interactive Displays of Highly Formatted Information

Page 158: Primenjeno programiranje

158

Uneditable Information Displays Postoje samo da bi ponudile

korisniku informacije

Page 159: Primenjeno programiranje

159

Uneditable Information Displays

Page 160: Primenjeno programiranje

160

Top-Level Containers

Bar jedna od ovih komponenti mora biti prisutna u aplikaciji

Page 161: Primenjeno programiranje

161

Top-Level Containers

Page 162: Primenjeno programiranje

162

General-Purpose Containers Kontejneri opšte namene Koriste se u većini sving

aplikacija

Page 163: Primenjeno programiranje

163

General-Purpose Containers

Page 164: Primenjeno programiranje

164

General-Purpose Containers

Page 165: Primenjeno programiranje

165

Special-Purpose Containers Kontejneri sa posebnim ulogama

Page 166: Primenjeno programiranje

166

Special-Purpose Containers

Page 167: Primenjeno programiranje

167

Special-Purpose Containers

Page 168: Primenjeno programiranje

168

Look and feel

Java look and feel

Page 169: Primenjeno programiranje

169

Look and feel

Windows look and feel

Page 170: Primenjeno programiranje

170

Look and feel

CDE/Motif look and feel

Page 171: Primenjeno programiranje

171

Look and feel

Default Alloy look and feel

Page 172: Primenjeno programiranje

7. časGrafički korisnički interfejs (gui)

Page 173: Primenjeno programiranje

173

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 174: Primenjeno programiranje

174

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 175: Primenjeno programiranje

175

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 176: Primenjeno programiranje

176

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 177: Primenjeno programiranje

177

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 178: Primenjeno programiranje

178

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 179: Primenjeno programiranje

179

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 180: Primenjeno programiranje

180

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 181: Primenjeno programiranje

181

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 182: Primenjeno programiranje

182

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 183: Primenjeno programiranje

183

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 184: Primenjeno programiranje

184

Dodavanje komponenti na prozor

Page 185: Primenjeno programiranje

185

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 186: Primenjeno programiranje

186

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 187: Primenjeno programiranje

187

Prostorni raspored komponenti BoxLayout:

Horizontalno u jednoj vrsti ili vertikalno u jednoj koloni

Page 188: Primenjeno programiranje

188

Prostorni raspored komponenti

FlowLayout: Ređa komponente na način na koji se

prelama tekst

Page 189: Primenjeno programiranje

189

Prostorni raspored komponenti GridLayout:

Tabela međusobno jednakih komponenti

Page 190: Primenjeno programiranje

190

Prostorni raspored komponenti

GridBagLayout:Formira se tabela međusobno

različitih kolona i vrsti

Page 191: Primenjeno programiranje

191

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 192: Primenjeno programiranje

192

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 193: Primenjeno programiranje

193

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 194: Primenjeno programiranje

194

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 195: Primenjeno programiranje

195

Komponente

Page 196: Primenjeno programiranje

196

Reakcije na događajeTip događaja Dodeljeni Listener

ActionEvent ActionListenerAdjustmentEvent AdjustmentListenerAncestorEvent AncestorListenerComponentEvent ComponentListenerContainerEvent ContainerListenerFocusEvent FocusListenerKeyEvent KeyListenerHierarchyEvent HierarchyListenerMouseEvent MouseListenerWindowEvent WindowListenerItemEvent ItemListenerTextEvent TextListener

Page 197: Primenjeno programiranje

8. časApleti

Page 198: Primenjeno programiranje

198

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 199: Primenjeno programiranje

199

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 200: Primenjeno programiranje

200

Primer apletaAppletTest.javaimport javax.swing.*;import java.awt.*;

public class AppletTest extends JApplet {

public void init() { getContentPane().add(new JLabel("Applet!"));

}}

Page 201: Primenjeno programiranje

201

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 202: Primenjeno programiranje

202

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 203: Primenjeno programiranje

203

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 204: Primenjeno programiranje

204

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 205: Primenjeno programiranje

205

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 206: Primenjeno programiranje

9. časKonekcija sa bazom podataka

Page 207: Primenjeno programiranje

207

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 208: Primenjeno programiranje

208

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 209: Primenjeno programiranje

209

Konekcija

Page 210: Primenjeno programiranje

210

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 211: Primenjeno programiranje

211

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 212: Primenjeno programiranje

212

Java SQL pristup bazama

Za zatvaranje konekcije:

try{

conn.close();

}catch(Exception ex){

ex.printStackTrace();

}

Page 213: Primenjeno programiranje

213

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 214: Primenjeno programiranje

214

Podešavanje izgleda aplikacije: U main klasi za XP look:

try {

UIManager.setLookAndFeel(

UIManager.getSystemLookAndFeelClassName());

} catch (Exception e) {

ex.printStackTrace();

}

Page 215: Primenjeno programiranje

EXTRA

Page 216: Primenjeno programiranje

216

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 217: Primenjeno programiranje

217

Č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 218: Primenjeno programiranje

218

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 219: Primenjeno programiranje

219

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