290 likes | 493 Views
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
E N D
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 i objekti • Glavni “učesnici” u Java programu suobjekti • Objekat predstavlja instancu klase koja određuje tip podataka koje objekat sadrži • Promenljive (sadrže podatke) i metodi (definišu ponašanje klase) [〈modifikator_klase〉] class 〈ime_klase〉 [extends 〈ime_nadklase〉] [implements 〈interface_1〉, 〈interface_2〉, ...] { // definicije metoda i promenljivih }
Klase i objekti classOsoba { // definicije promenljivih... // definicije metoda... } • Modifikatori klasa: • abstract • final • public • bez modifikatora
Tipovi • Osnovni tipovi podataka • boolean • char • byte • short • int • long • float • double
Objekti • Instanciranje objekta određene klase 〈naziv_objekta〉 = new 〈naziv_klase〉([parametar, parametar, ...]); • Konstruktor myPoint = new Point (3,6); • Podrazumevane vrednosti
Primer publicclassOsoba { // promenljive: protected String Ime; protectedintStarost; protectedOsobaMajka; privatebooleanozenjen; publicdoublevisina = 2.6; // direktna inicijalizacija publicstaticfinalint MAX_VISINA = 3; // konstanta // Definicije metoda... }
Metodi • Deklarisanje metoda: [〈modifikatori〉]〈tip_pov_vred〉〈naziv〉([〈parametri〉]) { // telo metoda ... } • Potpis metoda • Ime metoda • Broj, tip i redosled parametara
Modifikatori metoda • Modifikatori metoda: • private • protected • public • bez modifikatora • Dodatni modifikatori • abstract • final • static
Konstruktor • Poseban tip metoda za inicijalizaciju [modifikatori] 〈naziv_konstruktora〉 ([〈parametri〉]) { // Telo konstruktora... (inicijalizacija) } publicOsoba (String ime, int starost) { Ime = ime; Starost = starost; } .... Osoba novaOsoba = new Osoba(“Pera”, 24);
If iskaz if (〈boolean_expr〉) 〈true_statement〉 [elseif (〈boolean_expr〉) 〈else_if_statement〉] [else 〈else_statement〉] if (ocena == 5) System.out.println(“Pao je :(!"); else System.out.println(“Položio je :)");
Switch iskaz public Namirnica VratiNamirnicu (int novac) { Namirnica namirnica; switch (novac){ case 25: namirnica = new Hleb (); break; case 40: namirnica = new Mleko(); break; default: namirnica = new Zvaka(); break; } return namirnica; }
Petlje • For for ([〈inicijalizacija〉];[〈uslov〉];[〈increment〉]) { // telo petlje } for (inti = 0; i < 5; i++) System.out.println(“Vrednost brojaca:“ + i); • While while (〈uslov〉) { // telo petlje }
Petlje • Do-While do { // telo petlje } while (〈uslov〉)
Niz • Uređena kolekcija promenljivih istog tipa • 0 , n-1 〈tip_niza〉[] 〈naziv〉 [= { 〈inic_vred0〉,〈 inic_vred1〉,...,〈inic_vred_N−1〉}]; new 〈 tip_niza 〉[〈velicina〉] int[] a = newint[10]; float[][] x = new float[8][10];
Nasleđivanje class Telo { potected String Naziv; publicfloat Tezina; public String GetNaziv(){ return “Telo”; } } class Automobil extends Telo { publicint Brzina; public String GetNaziv(){ return “Automobil”; } }
Polimorfizam • Polimorfizam = više oblika Telo t = new Telo(); Telo t = new Automobil(); System.out.println(t.GetNaziv());
Izuzeci • Neočekivani događaji generisani u toku izvršavanja programa • “Bacanje” izuzetka: if (index > size()) { thrownew Exception("No element at index " + index); }
Izuzeci publicvoid goShopping() throwsShoppingListTooSmallException, OutOfMoneyException { // telo metoda ... } • Priprema korisnika i Java kompajlera na eventualne greške • Nije potrebno obrađivanje izuzetka
Obrada izuzetaka try 〈 blok_koda_1 〉 catch (〈 tip_izuzetka 〉 〈 promenljiva 〉) 〈 blok_koda_2〉 [catch (〈 tip_izuzetka 〉 〈 promenljiva 〉) 〈 blok_koda_3〉] ... [finally 〈 blok_koda_N 〉]
Interfejsi • Ugovori • Samo definicije • Public metodi i promenljive • Ne može se instancirati
Interfejsi // Interface za objekte koji mogu da se prodaju. publicinterface Sellable { //opis objekta public String description(); /* cena objekta */ publicint listPrice(); //najniža prihvatljiva cena publicint lowestPrice(); }
Interfejsi publicclassCameraimplements Sellable { private String descr; // opis kamere privateint price; // cena privateboolean color; // true ako je kamera u boji public Camera(String desc, int p, boolean c) { descr = desc; price = p; color = c; } public String description() { return descr; } publicint listPrice() { return price; } publicint lowestPrice() { return price/2; } public boolean isColor() { return color; } }
Apstraktne klase • Između interfejsa i konkretne klase • Može da ima tela metoda publicabstractclass Osoba { // apstraktni i konkretni metodi i promenljive } publicclass Student extends Osoba{ // implementacija }