37
12/9/2013 1 Primenjeno programiranje mr Boban Vesin Četvrtak (P): I čas: 16:45 - 17:30 II čas: 17:40 - 18:25 III čas: 18:35 - 19:20 Učionica U9 ili L3 Utorak (V): I grupa: 14:55 – 16:35 II grupa: 16:45 – 18:25 L3 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 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 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/ 5 Tehnologije Programski jezik: Java Razvojni alat: NetBeans 7.0.1 Sistem za upravljanje bazama podataka: MySql 5.0 (integrisan u sistemu xampp 3.3.1) 6 NetBeans 7.0.1

Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

  • Upload
    buikhue

  • View
    238

  • Download
    4

Embed Size (px)

Citation preview

Page 1: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

1

Primenjeno programiranjemr Boban Vesin

Četvrtak (P): I čas: 16:45 - 17:30II čas: 17:40 - 18:25III čas: 18:35 - 19:20Učionica U9 ili L3

Utorak (V):I grupa: 14:55 – 16:35II grupa: 16:45 – 18:25L3

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

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

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/

5

Tehnologije

� Programski jezik: Java

� Razvojni alat: NetBeans 7.0.1

� Sistem za upravljanje bazama

podataka: MySql 5.0 (integrisan u

sistemu xampp 3.3.1)

6

NetBeans 7.0.1

Page 2: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

2

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)

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

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

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.

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) 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 3: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

3

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

14

Programski jezik Java

� Opšta sintaksa samostalne aplikacije u Javi:

class <classname> {

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

}

}

� Program koji ispisuje “Hello World”

15

Primer Java programa

class NazivPrograma {

public static void main(String[] args) {

// ispis stringa.System.out.println(“Pozdrav!");

}

}

16

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());

}

}

17

Programski jezik Java

� Kompajliranje:javac NazivPrograma.java

� Kompajler generiše fajl:NazivPrograma.class

� Pokretanje programa:java NazivPrograma

18

Osnovni elementi

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

Page 4: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

4

19

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:� temp, var2sp, upisiBroj, pomnoziBrojeve,

i, x, x1, x2, zbir, ime_i_prezime,…20

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

21

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 >>>

22

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

23

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: PI, MAX, Font.BOLD, Font.ITALIC

24

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 5: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

5

25

Prosti tipovi podataka� Celobrojni

� int� short� long� byte

� Realni brojevi� float � double

� Znakovni� char

� Logički� boolean

26

Prosti tipovi podatakaProsti 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 — — —

27

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

28

Deklaracija promenjivih

Deklaracija promenjivih:<tip podataka> <naziv promenjive>Primer: int num1;

Inicijalizacija promenjivih:< tip podataka > < naziv promenjive > = vrednost

Primeri: double num2 = 3.1419;

float initVal ;

int pom, index = 2;

double gamma = 1.2, brightness ;

boolean valueOk = false;

29

Deklaracija promenjivih

Primeri:int i ;

int i , x, y;

double br1 = 4.9, br2 ;

int prva , druga = 2, treca = 5;

float gamma = 1.2, brightness = 3;

boolean uspesanUlaz = false ;

int a = 0, b = 4, c = prva + 9;

double det = ( b* b – 4* a* c);

30

Deklaracija promenjivihint index = 1.2;

boolean retOk = 1;double petCetvrtina = 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 6: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

6

31

Deklaracija promenjivihint index = 1.2; // greška

boolean ok = 1; // greškadouble petCetvrtina = 5 / 4; // ispravno

float odnos= 5.8f; // ispravno

double 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

32

Naredba dodelex = 1; // promenjivoj x dodeljujemo

vrednost 1

x = 7 + 5;

x = x + 1;

pom = x – y + z;

det = b* b - 4* a* c;

++a; // a = a + 1

b--; // b = b + 1

pom = a + b;

d*=5; // d = d * 5

33

Naredba dodeleint 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);

34

Naredbe dodele

class primerNaredbeDodele{public static void main(String[] args){

int i = 3;System.out.println(i);i = i + 1;System.out.println(i); i++;System.out.println(i);i = i + 7;System.out.println(i); int k = i + 2;System.out.println(k);System.out.println(i);

}}

35

Naredbe dodele

class primerNaredbeDodele2{

public static void main(String[] args){int i = 3, x = 3, y;System.out.println(i);System.out.println(x); y = x + i;System.out.println(y);x = x – y - i;System.out.println(x);

}}

36

Naredba dodelepublic class Demo {

public static void main (String[] arg) {

boolean b;

b = (2 + 2 == 4);

System.out.println(b);

}

}

Page 7: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

7

37

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);

}}

38

Konstante

� U Javi promenljiva se može učiniti konstantnom pomoću ključne rečifinal

� Na primer: final int X = 3;

final int MAX = 9;

final float PI = 3.14;

39

Razlika između i++ i ++i

class PrePostDemo {public static void main(String[] args){

final int MAX = 3;int i = MAX – 2;i++;System.out.println(i); // “1"++i;System.out.println(i); // “3"System.out.println(++i); // “4"System.out.println(i++); // “4"System.out.println(i); // “5“System.out.println(MAX); // “3“

}}

40

Primer 1public class Operacije{

public static void main(String[] args) {int i = 1;System.out.println(“Vrednost promenjive i je: " + i );i++;System.out.println("Vrednost promenjive i je: " + i) ;i = i * 4;System.out.println("Vrednost promenjive i je: " + i) ;i = i / 2;System.out.println("Vrednost promenjive i je: " + i) ;i = i – 1;System.out.println(“Krajnja vrednost i je: " + i + “! ”);

}

Rezultat izvođenja programa je:

Vrednost promenjive i je: 1Vrednost promenjive i je: 2Vrednost promenjive i je: 8Vrednost promenjive i je: 4Krajnja vrednost i je: 3!

41

Primer 2

public class KonverzijaDaljina {

public static void main(String[] args) {

float duzinaMilje; // vrednost duzine u miljamafloat duzinaKilometri; // vrednost duzine u kilometri ma

// 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 rezultat a

duzinaMilje = 5.0;duzinaKilometri = duzinaMilje * 1.609;System.out.println("5 milja = " + duzinaKilometri + " km");

}

}

42

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 8: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

8

43

Primer 3import java.util.Scanner; // programu je potrebna Sc anner 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);

}}

44

Primer 4program koji će od korisnika tražiti da unese vrednosti stranica pravougaonika i zatimizračunava i štampa vrednost površine tog pravougaonika.

import java.util.Scanner;

public class Zadatak5 {

public static void main(String[] args) {

double stranicaA, stranicaB, povrsina;

Scanner ulaz = new Scanner(System.in);

System.out.print("Unesite stranicu a pravougaonika: ");

stranicaA = ulaz.nextDouble();

System.out.print("Unesite stranicu B pravougaonika: ");

stranicaB = ulaz.nextDouble();

povrsina = stranicaA * stranicaB;

System.out.println("POvrsina iznosi: "+povrsina);

}

}

Grananje i petlje

46

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, switch

Petlje: for, while, do while

Naredbe prekida: break, continue, return

47

If – naredba grananja� Forma if naredbe:

if ( boolean uslov ){

izraz i ;

}

� Ili:if (boolean uslov )

izraz;

� 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 48

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

Page 9: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

9

49

Primer 1 if naredbe

if (prodaja > 75000){

bonus = 1000;

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

}

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

50

Primer 2 if naredbeint x = 5;

int y = 7;

if ( x > y){

y = 4;

System.out.println(“x je vece");

}

if ( y > x){

x = 4;

System.out.println(“y je vece");

}

System.out.println(“Vrednost x je: “ + x);

System.out.println(“Vrednost y je: “ + y);

51

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");

}

52

If..else naredba

� If...else izraz sintaksa:

if(uslov){

izrazi;

} else{

izrazi;

}

53

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 != 100) {

System.out.print(“x je promenjena”);

}else {

System.out.print(“x nije promenjena”);

}

54

Primer 3 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 10: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

10

55

Sintaksa else if

� Koristan za izbor između više mogućnosti:if ( uslov1 ) {

// izvršavanje prvog bloka naredbi

}else if ( uslov2 ) {

// izvršavanje drugog bloka naredbi

} else if ( uslov3 ) {

// izvršavanje treceg bloka naredbi

} else if ( uslov4 ) {// izvršavanje cetvrtog bloka naredbi

} else {

//ako ni jedan od predhodnih uslova nije //zadovoljen vrši se izvršavanje tre ćeg //bloka naredbi

}

56

else if

� Koristan za izbor između više mogućnosti:if ( n == 1 ) {

System.out.println(“ n je jednako 1 ");

}else if ( n == 2 ) {

System.out.println(“ n je jednako 2 ");

} else if ( n > 1 ) {

System.out.println(“ n je vece od 2 ");

} else if ( n < 5 ) {System.out.println(“ n je manje od 5 ");

} else {

System.out.println(“ n je manje od 5 ");

n = 1;

}

System.out.println(“kraj primera! ");

57

Primer 4 if naredbeboolean polozio;

String opis;

if( grade > 90 ){

polozio = true;

opis = “Odlicno!“;

System.out.println(opis);

}else if( grade > 60 ){

polozio = true;

opis = “Vrlo dobro!“;

System.out.println(opis);

}else{

polozio = false;

System.out.println(“Pali ste ispit!");

}

Primer 5 if naredbeif( bod >= 51 && bod <= 60 ){

ocena = 6;

}else if(bod >= 61 && bod <= 70 ){

ocena = 7;

}else if(bod >= 71 && bod <= 80 ){

ocena = 8;

}else if(bod >= 81 && bod <= 90 ){

ocena = 9;

}else if(bod >= 91 && bod <= 100 ){

ocena = 10;

}else if(bod <= 50 && bod >= 0 ){

ocena = 5;

}else{

System.out.println(“Greska!!");

}

58

59

Primer ugnježdene if … else

double x = 200;boolean ok = false;if ( x > 100 ) {

if ( ok == true) {x = x + 100.0; // 1

}else {x = x / 100.0; // 2

}}else{

x = 300.0; // 3}System.out.print(“x = ” + x); // 4

60

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 11: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

11

61

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 62

switch naredba� Sintaksa switch naredbe:

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

izrazi;break;

case(vrednost2):izrazi;break;

...default:

izrazi;break;

}

63

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 naredbi

break;}

64

switch naredbaint dan= 5;switch (dan) {

case 1: System.out.println(“Ponedeljak"); break;case 2: System.out.println(“Utorak"); break;case 3: System.out.println(“Sreda"); break;case 4: System.out.println(“Cetvrtak"); break;case 5: System.out.println(“Petak"); break;case 6: System.out.println(“Subota"); break;case 7: System.out.println(“Nedelja"); break;default: System.out.println(“Neispavan dan");break;

}

65

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; }

} }

66

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: 1za 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 12: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

12

67

for petlja

� Sintaksa for petlje:

for(inicijalizacija; uslov; inkrement){

izrazi;

}

68

for petlja� Izvršavanje n puta

int i;

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

// ovaj deo petlje će se izvršiti n puta

// i ide od 0 do n-1

}

� Bolji nacin:

for (int i = 1; i < = n; i++ ) {

// ovaj deo petlje će se izvršiti n puta

// i ide od 1 do N

}

69

Primer 1. for petlja

int i;

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

System.out.println(i);

}

ili:

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

System.out.println(i);

}

70

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);

}

}

}

71

Primer 3 for petlja

� Prikaz parnih brojeva do 100:

int broj = 0;

for (int i = 1 ; i < 50 ; i++) {

broj = broj + 2;

System.out.println(„Redni broj petlje: " + i);

System.out.println(" Parni broj: " + broj );

}

72

Primer 4 for petlja

� Izračunavanje sume brojeva do nekog prethodno definisanog:

n = ulaz.nextInt();

int suma = 0;

for(int i = 2; i <= n; i++){

suma = suma + i;

}

System.out.println(“Suma brojeva do “+ n + “ iznosi:

“ + suma)

Page 13: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

13

73

Primer 5 for petlja

� Izračunavanje faktorijela:

n! = 1*2*3*...*(n-1)*n

n = ulaz.nextInt();

int result = 1;

for(int i = 2; i <= n; i++){

result *= i;

}

System.out.println(n + “! iznosi“+ result)

74

while petlja

� Sintaksa while petlje

while(uslov){

izrazi;

}

75

Primer while naredbe

int x = 0;

while (x<10) {

System.out.println(x);

x++;

}

Primer 1 whileint brojac = 0;

while (brojac < 100) {

System.out.println(„Trenutno:" + brojac );

brojac = brojac + 1;

}

System.out.println(„Gotovo!");

76

Primer 2 while

� Proverava koliko određeni broj puta možemo podeliti sa dva

� / je celobrojno deljenje

int brojac = 0, broj;

while (broj >= 1) {

broj = broj / 2;

brojac ++;

}

System.out.print(„Delili smo ukupno");

System.out.println(brojac + „puta“); 77

Primer 3 while

� Izračunavanje sume brojeva do nekog prethodno definisanog:

n = ulaz.nextInt();

int suma = 0;

int i = 1;

while(i <= n){

suma = suma + i;

i++;

}

System.out.println(“Suma brojeva do “+ n + “

iznosi: “ + suma)

78

Page 14: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

14

79

do while petlja

� Sintaksa do...while petljedo{

izrazi;

}while(uslov);

� Primer:int x = 1;

do {

System.out.println(x);

x++;

}while (x<10);

80

Razlika while i do while petljaint odgovor = 2;while(odgovor == 1) {

System.out.print(„ispravno“);i++;odgovor = odgovor + 1;

}

int odgovor = 2;do{

System.out.print(„ispravno“);i++;odgovor = odgovor + 1;

} while(odgovor == 1)

Primer uporedni FORpublic class Test {

public static void main(String args[]) {

for(int x = 10; x < 20; x = x+1) {

System.out.print("value of x : " + x );

System.out.println("");

}

}

}

81

Primer uporedni whilepublic class Test {

public static void main(String args[]) {

int x = 10;

while( x < 20 ) {

System.out.print(“Vrednost x : " + x );

x++;

System.out.println("");

}

}

}

82

Primer uporedni do whilepublic class Test {

public static void main(String args[]) {

int x = 10;

do{

System.out.print(„Vrednost x : " + x );

x++;

System.out.println("");

}while( x < 20 );

}

}

83 84

break naredba� break naredba izvršava bezuslovni izlazak iz

while , do, for ili switch petlje

� Program proverava da li je broj prostint i, broj = 12;

for ( i = 2; i < broj; i++ ) {

if ( broj % i == 0) {

System.out.println("broj nije prost");

break;

}

}

if (i > broj / 2) {

System.out.println("broj je prost");

}

Page 15: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

15

85

continue

� Može se koristiti samo uz while , do ili for .

� Uzrokuje da petlja bezuslovno pokrene narednu iteraciju

� Primer štampa brojeve koji nisu deljivi sa 3

int maxId = 50;

for ( int i = 0; i < maxId ; i++ ) {

if ( i % 3 == 0 ){

continue;

}

System.out.println(i);

}

86

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;

}

}

}

87

Uporedni primerint count = 1;

while (count < 11) {

System.out.println(count);

count++;

}

/////////////////////////////////////////////

int count = 1;

do {

System.out.println(count);

count++;

} while (count < 11);

///////////////////////////////////////////

for(int count = 1; count < 11; count++){

System.out.println(count);

}

Nizovi i metodi

89

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

90

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 16: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

16

91

Deklaracija nizovaint 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];

92

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};

Različiti nizovidouble realni[] = new double[5];

realni[0] = 0.5;

realni[2] = 2.1;

realni[4] = realni[0] + realni[2] ;

realni[7] = 2.1; // greška

String reci[] = new String[5];

reci[4]= “kupus”;

reci[2]= reci[4] + “ salata”;

int celiBrojevi[] = new int[10];

celiBrojevi[0] = 13;

celiBrojevi[7] = celiBrojevi[0] + 35;

int velicina = celiBrojevi.lenght();93 94

Primer nizaclass ArrayDemo {

public static void main(String[] args) {

int[] niz; // deklarise niz integeraniz = new int[10]; // zauzima memoriju duzine 10niz[0] = 100;niz[1] = 312;…niz[9] = 459;

System.out.println("Nulti element niza je: " + niz[ 0]);System.out.println("1. element niza je: " + niz[0]) ;System.out.println("2. element niza je: " + niz[1]) ;System.out.println("3. element niza je: " + niz[2]) ;System.out.println("4. element niza je: " + niz[3]) ;System.out.println("5. element niza je: " + niz[4]) ;System.out.println("6. element niza je: " + niz[5]) ;System.out.println("7. element niza je: " + niz[6]) ;System.out.println("8. element niza je: " + niz[7]) ;System.out.println(“9. element niza je: " + niz[8]) ;

}

}

95

Iteracije kroz nizove� for petlja se koristi pri radu sa nizovima:

int mojNiz[] = new int[10];

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

mojNiz [i] = i;

}

int kvadrati[] = new int[7];

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

kvadrati [i] = (i+1)*(i+1);

}

96

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 17: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

17

97

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 + ".");}

}98

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 kao deo izraza

� poziv:

double v = izracunajZapreminuKvadra(a,b,c);

99

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 (){

}

Povratni tip

� void – ako metod ne vraća ni jednu vrednost

� int, double, boolean,... - ako vraća neku konkretnu vrednost

� Povratni tip može biti i niz, instanca klase, itd

100

Primer void povratnog tipametoda:

void stampajPoruke(){

System.out.println(“Greska”);

System.out.println(“Tip greske: 0222”);

System.out.println(“Probajte ponovo”);

}

Poziv metode:

stampajPoruke();

101

Primer void sa argumentimametoda:

void stampajPoruke(int kod){

System.out.println(“Greska”);

System.out.println(“Tip greske: ” + kod);

System.out.println(“Probajte ponovo”);

}

Poziv metode:

stampajPoruke(0222);

if (n>100){

stampajPoruke(0222);

}else{

stampajPoruke(0341);

}102

Page 18: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

18

Primer int povratnog tipaMetod:

int saberi(int a, int b){

return a + b;

}

Poziv:

int x = 7, y = 16, z;

Z = saberi (x,y);

int rezultat = saberi(8,9);

103

Primer 2 metodaMetod:int max(int num1, int num2) {

int result;if (num1 > num2){

result = num1;}else{

result = num2;}return result;

}

Poziv metoda:

int maximum = max(7,26);int x = 56, y = 32;maximum = max(x,y);

104

Primer double povratnog tipaMetod:

double diskriminanta(double a, double b, double c){

double dis = b*b – 4*a*c;

if (dis < 0){

return -dis;

}else {

return dis;

}

}

Poziv:

double d = diskriminanta(3.2, 2.5, 3);

105 106

Metodi – komplet struktura

� Deklaracija metoda:<kvantifikator pristupa> <static/final>

<povratni tip> <naziv metoda> <lista argumenata>

{telo metoda;

}

� Primer:public static void main(String args[]){

//telo metoda

}

107

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

108

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 prebaciEure (float euri) {}

public boolean postavi(int i, int j, String name) throws IndexOutOfBoundsException {}

Page 19: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

19

109

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

110

Primer 1.// definicija metoda

public int mult(int x, int y){

return x * y;}

// deo koda sa pozivom metodaint duzina = 10;

int sirina = 5;int area = mult(duzina, sirina);

111

Primer 2.int stepen(int a, int b){

int i;int total = 1;for(i = 1; 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);

112

Primer 3.class Area{

int duzina = 10;int sirina = 5;

public static void main(String[] args){int povrsina = izracunajPovrsinu();System.out.println(povrsina);

}

public static int izracunajPovrsinu(){int p = duzina * sirina;return p;

}}

113

Primer 4.� 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;

}} 114

Primer 5.

class voce{int grami, kalorije;

int kalorijePoGramu;

int ukupnoKalorija() {

return(grami* kalorijePoGramu);

}void ucitajVrednosti(){

}

public static void main (String argv[]) {

ucitajVrednosti();

kalorije = ukupnoKalorija();

}

}

Page 20: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

20

115

ZadatakDat je metod: public int izracunaj(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 = izracunaj(p, q);

1,2,11

116

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

117

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

4. časStringovi i Java klase

119

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);

120

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 21: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

21

121

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);

122

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”

123

Primer 1int godiste = 1985;

String prefiks = “Moje godiste je: ";

String godine = prefiks + godiste;

System.out.println(godine);

Rezultat izvođenja je:Moje godiste je: 1985

124

Primer 2Primer:public class StringDemo {

public static void main(String[] args) { String palindrom = “Ana voli Milovana"; 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);

} }

125

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

126

package klasnipregled;public class Radnik {

String ime,prezime;float plata;

public Radnik(String ime, String prezime, float pla ta) {this.ime = ime;this.prezime = prezime;this.plata = plata;

}

public void povecajPlatu(float procenat){plata = plata * (1 + procenat/100);

}

public void stampaj(){System.out.println("Ime radnika: " + ime);System.out.println("Prezime radnika: " + prezime);System.out.println("plata radnika: " + plata);

}

public void anuliraj(){ime=null;prezime=null;plata = 0;

}}

Deklaracija klase

Definicija promenjivih

Konstruktor

Metod

Metod

Page 22: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

22

127

Upotreba klase Radnikpackage klasnipregled;

public class MejnKlasa {

public static void main(String[] args) {

String ime="Marko";String prezime = "Markovic";float plata = 50000;

Radnik noviRadnik = new Radnik(ime, prezime, plata) ;

noviRadnik.stampaj();noviRadnik.povecajPlatu(10);noviRadnik.stampaj();noviRadnik.anuliraj();noviRadnik.stampaj();

}}

128

Definisanje metodaSvaki se metod definiše unutar definicije klase:

public class Film {

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);

}

void prikaziOcenu(int s, int g, int r){

System.out.print(“Ocena filma je: ”);

System.out.println(Film.ocenaFilma(s, g, r));

}

}

129

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: “ + StepenPr enosa);

} }

130

Klasa koja koristi klasu Biciklclass BicycleDemo {

public static void main(String[] args) {

// kreiramo dva nova objekta tipa biciklBicikl 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();

} }

131

Upotreba objekata

� Primer: kreiranje nove instance klase Vocei 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

132

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 23: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

23

133

Primer kreiranja instance klaseClass Program{

public static void main (String[] args)Tacka 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)

}

134

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()

135

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, semestar, prosečna ocena, itd. , kao i funkcije za pristup i obradu tih atributa koje su karakteristične za objekte te klase

136

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

137

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 138

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 24: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

24

139

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) ...

140

Šta su klase i objekti?Klase su šabloni za kreiranje objekata

(instanci klasa)� promenjive

� Promenjive instance� Statičke promenjive

� Metodi� instance� statički

141

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.0

middlePoint.x = 640.0;middlePoint.y = 512.0

142

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

143

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

144

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 25: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

25

5. časGrafički korisnički interfejsGraphical user interface GUI

146

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

147

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 zasnivana korišćenju komponenti korisničkog interfejsa koje sudostupne na platformi na kojoj se program pokreće

� Implementacija AWT komponenti – različita za svakioperativni sistem

� Izgled aplikacija – kao da su pisane u bilo kom drugomjeziku na datoj platformi

� Od verzije 1.2 standard je Swing biblioteka

148

Abstract Window Toolkit

� AWT: biblioteka koja obezbeđuje upotrebu minimalnogskupa komponenti grafičkog interfejsa, a kojegposeduju sve platforme koje podržavaju Javu

� izgleda “podjednako osrednje” na svim platformama

� paketi:

� java.awt

� java.awt.event

� java.awt.image

� java.awt.datatransfer

149

Swing� napisan “od nule”, u Javi

� ne oslanja se na operativni sistem, komponente sesamostalno iscrtavaju na ekranu

� jednako izgleda i radi na svim platformama

� veliki broj komponenti, tj. nema ograničenja na broj itip 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

150

Basic Controls

� Jednostavne komponente koje se prvenstveno koriste za unos od strane korisnika

Page 26: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

26

151

Basic controls

152

Basic controls

153

Basic controls

154

Basic controls

155

Interactive Displays of Highly Formatted Information � Komponente za prikazivanje

interakcije koju može korisnik izmeniti

156

Interactive Displays of Highly Formatted Information

Page 27: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

27

157

Interactive Displays of Highly Formatted Information

158

Interactive Displays of Highly Formatted Information

159

Interactive Displays of Highly Formatted Information

160

Uneditable Information Displays

� Postoje samo da bi ponudile korisniku informacije

161

Uneditable Information Displays

162

Top-Level Containers

� Bar jedna od ovih komponenti mora biti prisutna u aplikaciji

Page 28: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

28

163

Top-Level Containers

164

General-Purpose Containers

� Kontejneri opšte namene� Koriste se u većini sving aplikacija

165

General-Purpose Containers

166

General-Purpose Containers

167

Special-Purpose Containers

� Kontejneri sa posebnim ulogama

168

Special-Purpose Containers

Page 29: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

29

169

Special-Purpose Containers

170

Look and feel

� Java look and feel

171

Look and feel

� Windows look and feel

172

Look and feel

� CDE/Motif look and feel

173

Look and feel

� Default Alloy look and feel

174

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 inicijalizujei glavni prozor aplikacije, koji se potom iprikaže na ekranu

� Primer: GUI aplikacija koja otvara prozor

Page 30: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

30

175

Osnovna struktura GUI aplikacije

import 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);

}}

176

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 elementakorisničkog interfejsa

� ovakav opis se može kreirati u tekstualnoj datoteciodgovarajućeg formata ili nacrtati primenomodgovarajućeg alata

� “vizelna okruženja” za razvoj softvera – programer crtaizgled svoje aplikacije

� u Javi se izgled korisničkog interfejsa ne definišedeklarativno, pomoću resursa

� Java aplikacije svoj korisnički interfejs gradeprogramski, najčešće u toku inicijalizacije prozora

177

Dodavanje komponenti na prozor

� prilikom konstrukcije objekta klase naslednice JFrame dodaju sekomponente 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

//klaseprivate JButton bOK = new JButton("OK");private JButton bCancel = new JButton("Cancel");

}

178

Dodavanje komponenti na prozor

179

Prostorni raspored komponenti

� koriste se layout manager-i

� instanca neke od xxxLayout klasa

� različiti layout manager-i iste komponenteraspoređuju na različit način

� svaki kontejner ima sebi asociran layoutmanager

� standardni layout manager-i:� BorderLayout, CardLayout, FlowLayout,

GridLayout, GridBagLayout, BoxLayout,SpringLayout

� korisnički definisani layout manager-i

180

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 31: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

31

181

Prostorni raspored komponenti

� BoxLayout:

� Horizontalno u jednoj vrsti ili vertikalno u jednoj koloni

182

Prostorni raspored komponenti

FlowLayout:

� Ređa komponente na način na koji se prelama tekst

183

Prostorni raspored komponenti

� GridLayout:

� Tabela međusobno jednakih komponenti

184

Prostorni raspored komponenti

� GridBagLayout:

�Formira se tabela međusobno različitih kolona i vrsti

185

Prostorni raspored komponenti

� Apsolutno pozicioniranje� Raspoređivač kontejnera se uklanja:

setLayout(null)

� Zatim se komponente postavljaju sametodom:

setBounds(int x, int y, int width int heigh)6. čas

Event Driven model

Page 32: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

32

187

Event Driven model

� korisnički interfejs kod GUI aplikacija je upravljandogađajima

� pišu se metode (obrađivači događaja) koje se izvršavajupo pojavi nekog događaja korisničkog interfejsa - klikmišem, pritisak tastera i sl.

� program ima inicijalizacioni blok i blokove koda kojireaguju na događaje korisničkog interfejsa (obrađivačedogađ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)

188

Event Driven model (2)

� inicijalizacioni blok se u Java GUIprogramima izvršava počevši od metodemain()

� događaji se opisuju xxxEvent klasama –za svaku vrstu događaja definisana jeposebna klasa

� pritisak tastera – KeyEvent klasa

� pomeranje miša – MouseEvent klasa

� sve xxxEvent klase nasleđuju klasu Event

189

Event Driven model (3)

� svaka akcija nad komponentama korisničkoginterfejsa izaziva generisanje objekata klasanaslednica Event klase

� ti objekti se prosleđuju objektima klasanaslednica EventListener klase, koje“osluškuju” događaje

� “osluškivači” – instance neke od xxxListenerklasa, npr.:� KeyListener – “osluškivač” za KeyEvent događaj

� EventListener-i uvedeni od verzije 1.1.

190

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 bitiinstanca neke klase koja implementira odgovarajućiinterfejs

import java.awt.*;

import java.awt.event.*;

public class MyListener implements ActionListener {

public void actionPerformed ( ActionEvent ev) {

System.exit(0);

}

}

191

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 dugmadimabOK.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");

}192

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 netBeansJButton b = new JButton("Pritisni me");b.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {...

});

Page 33: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

33

193

Reakcije na događaje

Tip događaja Dodeljeni ListenerActionEvent ActionListener

AdjustmentEvent AdjustmentListenerAncestorEvent AncestorListenerComponentEvent ComponentListener

ContainerEvent ContainerListenerFocusEvent FocusListener

KeyEvent KeyListenerHierarchyEvent HierarchyListenerMouseEvent MouseListener

WindowEvent WindowListenerItemEvent ItemListener

TextEvent TextListener

8. časKonekcija sa bazom podataka

195

Konekcija

196

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

197

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();

}

198

Java SQL pristup bazama

� Za zatvaranje konekcije:

try{

conn.close();

}catch(Exception ex){

ex.printStackTrace();

}

Page 34: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

34

199

Java SQL pristup bazama

� Postavljanje upita:

String sql="INSERT INTO slonovi (ime, prezime)" + " VALUES ('"+jTextField1.getText()+"', '"+jTextField2.getTex t()+"')";

try{

if ((jTextField1.getText()!=null)&&(jTextField2.get Text()!=null)) {

int rowsAffected = stmt.executeUpdate(sql);

}

}catch(Exception ex){

ex.printStackTrace();

}

200

Podešavanje izgleda aplikacije:

� U main klasi za XP look:

try {

UIManager.setLookAndFeel(

UIManager.getSystemLookAndFeelClassName());

} catch (Exception e) {

ex.printStackTrace();

}

7. časPrimeri, obrada izuzetaka, ostali elementi

202

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

203

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 - konstante204

Ključna reč this

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

metoda pozvana

Page 35: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

35

205

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 stranicaprivate float gore, dole, levo, desno;

// konstruktorPravougaonik(float gore, float dole, float levo, fl oat

desno){this.gore = gore;this.dole = dole;this.levo = levo;this.desno = desno;

}

float povrsina(){return (gore - dole)*(desno - levo);

}...

}}

206

primerClass Autoput{

private int brojTraka = 3;

final void postaviBrojTraka(int noviBrojTraka){

brojTraka = noviBrojTraka;

}

final int citajBrojTraka(){

return brojTraka;

}

}

207

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 naredbe208

Sintaksa try-catch naredbe

try {

// 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

}

...

209

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();

}

210

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 36: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

36

211

Primer throw naredbeif(t == null)

throw new NullPointerException("t = null");

Primer 2:public double korenFunkcije( double A, double B, do uble 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);

}

}

212

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)

213

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

214

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 ismeštanje istih u HTML fajl

� Oznake za dokumentaciju koje počinju sa@ nazivaju se samostalne (stand-alone) imoraju stajati u zasebnom redu, npr.@author Boban

� Oznake koje počinju vitičastim zagradamanazivaju se unutrašnje (in-line) i mogu sestavljati unutar većih opisa, npr. {@code}

215

Č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 iskoristi kao izvor podataka.

� Sledeći iskaz pravi objekat tipa Scanner kojipodatke čita sa standardnog ulaza, što jepodrazumevano tastatura:

Scanner consoleIn = new Scanner(System.in);

Napomena: System.in je objekat tipa InputStream.216

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 37: Utorak (V): L3 Primenjeno · PDF filenivoa, treće generacije): Pascal, c, c++, Java, Basic, C# Neproceduralni programski jezici (deklarativni programski jezici, jezici vrlo visokog

12/9/2013

37

217

Interfejsi� Ključna riječ interface u Javi koristi se za

potpuno apstrahovanje načina pristupaklasi – tj. možemo reći klasi šta da radi, aline i kako.

� Interfejsi nemaju promjenljive instanci, anjihove metode nemaju telo.

� Klasa može implementirati više interfejsa(ključna riječ implements).

� Koriste se za implementaciju višestrukognasleđivanja.

� Interfejsi se mogu proširiti, tj. jedaninterfejs može da nasledi drugi pomoćuključne riječi extends