strukture podataka i algoritmi
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 PresentationTRANSCRIPT
Strukture Strukture podataka i podataka i algoritmialgoritmi
Uvod u programski jezik JavaUvod u programski jezik Java
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
Klase, tipovi i Klase, tipovi i objektiobjekti
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
}}
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
TipoviTipovi
Osnovni tipovi podatakaOsnovni tipovi podataka– bbooleanoolean – charchar – bytebyte – shortshort– intint– longlong– floatfloat– doubledouble
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
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...
}}
MetodiMetodi
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
Modifikatori metodaModifikatori metoda
Modifikatori metoda:Modifikatori metoda:– privateprivate– protectedprotected– publicpublic– bez modifikatorabez modifikatora
Dodatni modifikatoriDodatni modifikatori– abstractabstract– finalfinal– staticstatic
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);
Upravljanje Upravljanje tokomtokom
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 :)");");
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;
}}
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}}
PetljePetlje
Do-WhileDo-Whiledodo
{{
// telo petlje// telo petlje
}}
whilewhile ( ( 〈〈 uslovuslov 〉〉 ))
NizoviNizovi
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];
Objektno-Objektno-orijentisano orijentisano
programiranjeprogramiranje
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”;
}}}}
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());
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); }
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
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 〉〉 ] ]
InterfejsiInterfejsi
UgovoriUgovori
Samo definicijeSamo definicije
Public metodi i promenljivePublic metodi i promenljive
Ne može se instanciratiNe može se instancirati
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();
}}
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; }
}}
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
}}