strukture podataka i algoritmi

29
Strukture Strukture podataka i podataka i algoritmi algoritmi Uvod u programski jezik Uvod u programski jezik Java Java

Upload: verda

Post on 27-Jan-2016

53 views

Category:

Documents


5 download

DESCRIPTION

Strukture podataka i algoritmi. Uvod u programski jezik Java. Agenda. Klase, tipovi i objekti Metodi Upravljanje tokom Nizovi Nasleđivanje i polimorfizam Izuzeci Interfejsi i apstraktne klase. Klase, tipovi i objekti. Klase i objekti. Glavni “ učesnici ” u Java program u su objekti - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Strukture podataka i algoritmi

Strukture Strukture podataka i podataka i algoritmialgoritmi

Uvod u programski jezik JavaUvod u programski jezik Java

Page 2: Strukture podataka i algoritmi

AgendaAgenda

Klase, tipovi i objektiKlase, tipovi i objekti MetodiMetodi Upravljanje tokomUpravljanje tokom NizoviNizovi Nasleđivanje i polimorfizamNasleđivanje i polimorfizam IzuzeciIzuzeci Interfejsi i apstraktne klaseInterfejsi i apstraktne klase

Page 3: Strukture podataka i algoritmi

Klase, tipovi i Klase, tipovi i objektiobjekti

Page 4: Strukture podataka i algoritmi

Klase i objektiKlase i objekti GlavniGlavni “ “učesniciučesnici” ” u u Java programJava programu suu su

objekti objekti Objekat predstavlja instancu klase koja Objekat predstavlja instancu klase koja

određuje tip podataka koje objekat sadržiodređuje tip podataka koje objekat sadrži Promenljive (sadrže podatke) i metodi Promenljive (sadrže podatke) i metodi

(definišu ponašanje klase)(definišu ponašanje klase)

[[ 〈〈 modifimodifikator_klasekator_klase 〉〉 ] ] classclass 〈〈 ime_klaseime_klase 〉 〉 [[extendsextends 〈〈 ime_nadklaseime_nadklase 〉〉 ] ] [[implementsimplements 〈〈 interface_1interface_1 〉〉 , , 〈〈 interface_2interface_2 〉〉 , ...] , ...]

{ { // // definicije metoda i promenljivihdefinicije metoda i promenljivih

}}

Page 5: Strukture podataka i algoritmi

Klase i objektiKlase i objekti

classclass OsobaOsoba

{ {

// // definicije promenljivihdefinicije promenljivih... ...

// // definicije metodadefinicije metoda... ...

}}

Modifikatori klasa:Modifikatori klasa:– abstract abstract – final final – publicpublic– bez modifikatorabez modifikatora

Page 6: Strukture podataka i algoritmi

TipoviTipovi

Osnovni tipovi podatakaOsnovni tipovi podataka– bbooleanoolean – charchar – bytebyte – shortshort– intint– longlong– floatfloat– doubledouble

Page 7: Strukture podataka i algoritmi

ObjektiObjekti

Instanciranje objekta određene klaseInstanciranje objekta određene klase

〈〈 naziv_objektanaziv_objekta 〉 〉 = = newnew 〈〈 naziv_klasenaziv_klase 〉〉 ([param([parametaretar, , paramparametaretar, ...]);, ...]);

KonstruktorKonstruktor

myPoint = myPoint = newnew Point (3,6); Point (3,6);

Podrazumevane vrednostiPodrazumevane vrednosti

Page 8: Strukture podataka i algoritmi

PrimerPrimer

publicpublic classclass OsobaOsoba

{ {

// // promenljivepromenljive::

protectedprotected String String ImeIme;;

protectedprotected intint StarostStarost;;

protectedprotected OsobaOsoba MajkaMajka;;

privateprivate booleanboolean ozenjenozenjen;;

publicpublic doubledouble visinavisina = 2.6; = 2.6; // // direktna inicijalizacijadirektna inicijalizacija

publicpublic staticstatic finalfinal intint MAX_ MAX_VISINAVISINA = 3; = 3; // // konstantakonstanta

// // Definicije metoda...Definicije metoda...

}}

Page 9: Strukture podataka i algoritmi

MetodiMetodi

Page 10: Strukture podataka i algoritmi

MetodiMetodi

Deklarisanje metoda:Deklarisanje metoda:

[[ 〈〈 modifikatorimodifikatori 〉〉 ]] 〈〈 tip_pov_vredtip_pov_vred 〉〈〉〈 nazivnaziv 〉〉([([ 〈〈 parametriparametri 〉〉 ]) ])

{ {

// telo metoda ... // telo metoda ...

}}

Potpis metodaPotpis metoda– Ime metodIme metodaa– Broj, tip i redosled parametaraBroj, tip i redosled parametara

Page 11: Strukture podataka i algoritmi

Modifikatori metodaModifikatori metoda

Modifikatori metoda:Modifikatori metoda:– privateprivate– protectedprotected– publicpublic– bez modifikatorabez modifikatora

Dodatni modifikatoriDodatni modifikatori– abstractabstract– finalfinal– staticstatic

Page 12: Strukture podataka i algoritmi

KonstruktorKonstruktor

Poseban tip metoda za inicijalizacijuPoseban tip metoda za inicijalizaciju

[[modifikatorimodifikatori] ] 〈〈 naziv_konstruktoranaziv_konstruktora 〉 〉 ([([ 〈〈 parametriparametri 〉〉 ]) ])

{ {

// // Telo konstruktoraTelo konstruktora... ... (inicijalizacija)(inicijalizacija)

}}

publicpublic OsobaOsoba (String (String ime, ime, intint starost starost) )

{{

ImeIme = = imeime; ;

StarostStarost = = staroststarost; ;

}}

........

Osoba novaOsoba = Osoba novaOsoba = newnew Osoba(“Pera”, 24); Osoba(“Pera”, 24);

Page 13: Strukture podataka i algoritmi

Upravljanje Upravljanje tokomtokom

Page 14: Strukture podataka i algoritmi

If If iskaziskaz

ifif ( ( 〈〈 boolean_exprboolean_expr 〉〉 ) )

〈〈 true_statementtrue_statement 〉 〉 [[elseelse ifif ( ( 〈〈 boolean_exprboolean_expr 〉〉 ) )

〈〈 else_if_statementelse_if_statement 〉〉 ] ]

[[elseelse 〈〈 else_statementelse_statement 〉〉 ]]

ifif (ocena == 5) (ocena == 5)

System.out.println(“System.out.println(“Pao je :(!Pao je :(!");");

elseelse

System.out.println(“System.out.println(“Položio je :)Položio je :)");");

Page 15: Strukture podataka i algoritmi

Switch iskazSwitch iskazpublicpublic Namirnica VratiNamirnicu ( Namirnica VratiNamirnicu (intint novac) { novac) {

Namirnica namirnica;Namirnica namirnica;switchswitch (novac){ (novac){

casecase 25: 25:namirnica = namirnica = newnew Hleb (); Hleb ();breakbreak;;

casecase 40: 40: namirnica = namirnica = newnew Mleko(); Mleko();

breakbreak;;defaultdefault::

namirnica = namirnica = newnew Zvaka(); Zvaka();breakbreak;;

}}returnreturn namirnica; namirnica;

}}

Page 16: Strukture podataka i algoritmi

PetljePetlje ForFor

forfor ([ ([ 〈〈 inicijalizacijainicijalizacija 〉〉 ];[];[ 〈〈 uslovuslov 〉〉 ];[];[ 〈〈 incrementincrement 〉〉 ]) ]) {{

// telo petlje// telo petlje}}

forfor ( (intint ii = 0; = 0; i < 5i < 5; ; i++i++))System.out.println(“Vrednost brojaca:“ + i);System.out.println(“Vrednost brojaca:“ + i);

WhileWhilewhilewhile ( ( 〈〈 uslovuslov 〉〉 )){{

// telo petlje// telo petlje}}

Page 17: Strukture podataka i algoritmi

PetljePetlje

Do-WhileDo-Whiledodo

{{

// telo petlje// telo petlje

}}

whilewhile ( ( 〈〈 uslovuslov 〉〉 ))

Page 18: Strukture podataka i algoritmi

NizoviNizovi

Page 19: Strukture podataka i algoritmi

NizNiz

Uređena kolekcija promenljivih istog Uređena kolekcija promenljivih istog tipatipa

0 , n-10 , n-1

〈〈 tip_nizatip_niza 〉〉 [] [] 〈〈 nazivnaziv 〉 〉 [= { [= { 〈〈 inic_vred0inic_vred0 〉〉 ,,〈〈 inic_vred1inic_vred1 〉〉 ,, ...,..., 〈〈 inic_vredinic_vred_N−1_N−1 〉〉 }]; }];

newnew 〈 〈 tip_nizatip_niza 〉〉 [[ 〈〈 velicinavelicina 〉〉 ] ]

intint[] a = [] a = newnew intint[10]; [10];

floatfloat[][] [][] xx = new = new floatfloat[8][10]; [8][10];

Page 20: Strukture podataka i algoritmi

Objektno-Objektno-orijentisano orijentisano

programiranjeprogramiranje

Page 21: Strukture podataka i algoritmi

NasleđivanjeNasleđivanjeclassclass Telo { Telo {

potectedpotected String Naziv; String Naziv;publicpublic floatfloat Tezina; Tezina;

publicpublic String GetNaziv(){ String GetNaziv(){returnreturn “Telo”; “Telo”;

}}}}

classclass Automobil Automobil extendsextends Telo { Telo {publicpublic intint Brzina; Brzina;

publicpublic String GetNaziv(){ String GetNaziv(){return return “Automobil”;“Automobil”;

}}}}

Page 22: Strukture podataka i algoritmi

PolimorfizamPolimorfizam

Polimorfizam = više oblikaPolimorfizam = više oblika

Telo t = Telo t = newnew Telo(); Telo();

Telo t = Telo t = newnew Automobil(); Automobil();

System.out.println(t.GetNaziv());System.out.println(t.GetNaziv());

Page 23: Strukture podataka i algoritmi

IzuzeciIzuzeci

Neočekivani događaji generisani u Neočekivani događaji generisani u toku izvršavanja programatoku izvršavanja programa

““Bacanje” izuzetka:Bacanje” izuzetka:

ifif ( (iindex > size()) { ndex > size()) {

throwthrow newnew Exception("No element at index " + Exception("No element at index " + iindex); }ndex); }

Page 24: Strukture podataka i algoritmi

IzuzeciIzuzeci

publicpublic voidvoid goShopping() goShopping() throwsthrows ShoppingListTooSmallException, OutOfMoneyException ShoppingListTooSmallException, OutOfMoneyException

{ {

// // telo metodatelo metoda ... ...

} }

Priprema korisnika i Java kompajlera Priprema korisnika i Java kompajlera na eventualne greškena eventualne greške

Nije potrebno obrađivanje izuzetkaNije potrebno obrađivanje izuzetka

Page 25: Strukture podataka i algoritmi

Obrada izuzetakaObrada izuzetaka

trytry

〈〈 blok_koda_1 blok_koda_1 〉 〉 catchcatch ( ( 〈〈 tip_izuzetka tip_izuzetka 〉 〈〉 〈 promenljiva promenljiva 〉〉 ) )

〈 〈 blok_koda_blok_koda_22 〉 〉 [[catchcatch ( ( 〈 〈 tip_izuzetkatip_izuzetka 〉 〈〉 〈 promenljiva promenljiva 〉〉 ) )

〈 〈 blok_koda_blok_koda_33 〉〉 ] ... ] ...

[[finallyfinally

〈 〈 blok_koda_Nblok_koda_N 〉〉 ] ]

Page 26: Strukture podataka i algoritmi

InterfejsiInterfejsi

UgovoriUgovori

Samo definicijeSamo definicije

Public metodi i promenljivePublic metodi i promenljive

Ne može se instanciratiNe može se instancirati

Page 27: Strukture podataka i algoritmi

InterfejsiInterfejsi

/// Interface / Interface za objekte koji mogu da se prodajuza objekte koji mogu da se prodaju..

publicpublic interfaceinterface Sellable Sellable

{{

//// opis objekta opis objekta

publicpublic String description(); String description();

/* /* cena objektacena objekta */ */

publicpublic intint listPrice(); listPrice();

//// najniža prihvatljiva cenanajniža prihvatljiva cena

publicpublic intint lowestPrice(); lowestPrice();

}}

Page 28: Strukture podataka i algoritmi

InterfejsiInterfejsipublicpublic classclass CameraCamera implementsimplements Sellable { Sellable {

privateprivate String descr; // String descr; // opis kamereopis kamere

privateprivate intint price; // price; // cenacena

privateprivate booleanboolean color; // true color; // true ako je kamera u bojiako je kamera u boji

publicpublic Camera(String desc, Camera(String desc, intint p, p, booleanboolean c) { c) {

descr = desc;descr = desc;

price = p;price = p;

color = c;color = c;

}}

publicpublic String description() { String description() { returnreturn descr; } descr; }

publicpublic intint listPrice() { listPrice() { returnreturn price; } price; }

publicpublic intint lowestPrice() { lowestPrice() { returnreturn price/2; } price/2; }

publicpublic boolean isColor() { boolean isColor() { returnreturn color; } color; }

}}

Page 29: Strukture podataka i algoritmi

Apstraktne klaseApstraktne klase

Između interfejsa i konkretne Između interfejsa i konkretne klaseklase

Može da ima tela metodaMože da ima tela metoda

publicpublic abstractabstract classclass Osoba { Osoba {

// apstraktni i konkretni metodi i promenljive// apstraktni i konkretni metodi i promenljive

}}

publicpublic classclass Student Student extendsextends Osoba{ Osoba{

// implementacija// implementacija

}}