300 likes | 455 Views
Основни концепти у Јаvа језику. Основни концепти у Јаvа језику. НАСТАВНИ МЕТОД: ПРЕДАВАЊА. Струткура предавања. Типови података Променљиве Управљање током Низови Класе и објекти Наслеђивање и полиморфизам Интерфејси и апстрактне класе Изузеци. Тип податка.
E N D
Основни концепти у Јаvа језику НАСТАВНИ МЕТОД: ПРЕДАВАЊА
Струткура предавања • Типови података • Променљиве • Управљање током • Низови • Класе и објекти • Наслеђивање и полиморфизам • Интерфејси и апстрактне класе • Изузеци
Тип податка • Тип податка се дефинише као скуп вредности (објеката) и операција над њима • Прости типови података у Java језику • boolean • char • byte, short, int, long • float, double • Сложени типови – структуре података
Променљиве • Чувају конкретне вредности • Пренос преко вредности и преко адресе • Декларација: int podatak; • Додељивање вредности podatak = 27; intelem; elem = podatak;
Управљање током • If исказ: 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 исказ switch(<promenljiva>){ case<vrednost1>: <blok koda 1> break; case<vrednost2>: <blok koda 2> break; default: <blok koda 3> break; }
Управљање током • for петља for ([〈inicijalizacija〉];[〈uslov〉];[〈increment〉]) { // telo petlje } for (inti = 0; i < 5; i++){ System.out.println(“Vrednost brojaca:“ + i); } • while петља while (〈uslov〉) { // telo petlje }
Управљање током • Do-Whileпетља do { // telo petlje } while (〈uslov〉) • Prekiditeracije break continue
Низови • Уређена колекција(струткура) променљивих истог типа сукцесивно повезаних у меморији • Индексирање елемената: 0 , n-1 〈tip_niza〉[] 〈naziv〉 new 〈 tip_niza 〉[〈velicina〉]; int[] a = newint[10]; new 〈 tip_niza 〉[]{ 〈inic_vred1〉,〈inic_vred2〉,...,〈inic_vred_N〉}]; int[] b = newint[]{4, 23, 743, -43, 16}; float[][] x = new float[8][10];
Класе • Класа је апстрактна структура која дефинише карактеристике и понашање неке ствари (објекта) – дефиниција • Променљиве (одређују својства) и методе (дефинишу понашање) [〈modifikator_klase〉] class 〈ime_klase〉 [extends 〈ime_nadklase〉] [implements 〈interface_1〉, 〈interface_2〉, ...] { // definicije metoda i promenljivih }
Класе classOsoba { // definicije promenljivih... // definicije metoda... } • Модификатори класа • abstract • final • public • bez modifikatora
Класе publicclassOsoba { // promenljive protected String Ime; protectedintStarost; privateOsobaMajka; publicdoublevisina = 1.76; // direktna inicijalizacija publicstaticfinalint MAX_VISINA = 2.45; // konstanta // Definicije metoda... }
Класе • Декларисање методе: [〈modifikatori〉]〈tip_pov_vred〉〈naziv〉([〈parametri〉]) { // telo metodе... } • Потпис методе • Име методе • Број, тип и редослед параметара
Класе • Модификатори методе: • private • protected • public • bezmodifikatora • Додатни модификатори • abstract • final • static
Објекти • Објекат представља конкретно појављивање (инстанцу) неке класе • Инстанцирање (прављење) објеката: 〈naziv_klase〉〈naziv_objekta〉 = new 〈naziv_klase〉([parametar, parametar, ...]);
Објекти • Конструктор - посебна метода за иницијализацију [modifikatori] 〈naziv_klase〉 ([〈parametri〉]) { // Telo konstruktora... (inicijalizacijapromenljivih) } publicOsoba (String ime, int starost) { Ime = ime; Starost = starost; } Osoba novaOsoba = new Osoba(“Pera”, 24);
Наслеђивање • Генерализација - специјализација classTelo { potected String Naziv; publicfloat Tezina; public String staJeOvo(){ return“Ово је тело”; } } class Automobil extends Telo { publicint Brzina; public String staJeOvo(){ return “Ово је аутомобил”; } }
Наслеђивање Telo t = new Telo(); System.out.println(t.staJeOvo()); ‘Ово је тело’ Automobil а = new Automobil(); System.out.println(а.staJeOvo()); ‘Ово је automobil’ а.Tezina = 1.4;
Полиморфизам • Поли-морфно = више облика Telo t = new Telo(); System.out.println(t.staJeOvo()); ‘Ово је тело’ Telo а= new Automobil(); System.out.println(а.staJeOvo()); ‘Ово је automobil’ Automobil а = new Telo(); a.Brzina ???
Интерфејси • Апстрактни типови података • Само дефиниција (уговор) • Јавне методе и променљиве • Могу се користити за декларацију објеката, али не и за инстанцирање
Интерфејси // 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(); }
Интерфејси publicclassCameraimplements Sellable { private String descript; // opis kamere privateint price; // cena privatefloatresolution; // rezolucija kamere (MP) public Camera(String desc, int p, floatmp) { descript = desc; price = p; resolution= mp; } public String description() { return descript; } publicintlistPrice() { return price; } publicintlowestPrice() { return price/2; } publicfloatmp() { returnresolution; } } Sellable c = new Camera();
Апстрактне класе • Између интерфејса и конкретне класе • Апстрактне методе • Није могуће инстанцирати објекат апстрактне класе
Апстрактне класе publicabstractclass Osoba { privateString Ime; publicabstractint brojGodina(); publicString vratiIme(){ returnIme; } } publicclass Student extends Osoba{ // obaveznaimplementacijaapstraktnih metoda }
Изузеци • Неочекивани догађаји генерисани у току извршења програма • Генерисањеизузетка: float del = 45/0; (DivideByZeroException) if (index > size()) { thrownew Exception("No element at index " + index); }
Изузеци publicvoidgoShopping() throwsShoppingListTooSmallException, OutOfMoneyException { // telo metode ... } • Припрема корисника и Java компајлера на евентуалне изузетке
Обрада изузетака try 〈 blok_koda_1 〉 catch(〈 tip_izuzetka 〉 〈 promenljiva 〉) 〈 blok_koda_2〉 [catch (〈 tip_izuzetka 〉 〈 promenljiva 〉) 〈 blok_koda_3〉] ... [finally 〈 blok_koda_N 〉]