Upload
slavko-prekajski
View
241
Download
6
Embed Size (px)
DESCRIPTION
prezentacija FON-a
Citation preview
Основни концепти у Јаvа језику
Радна недеља Тематска целина Циљ
1
1. Основни концепти у Јаvа језику Упознавање са основним концептима у Јаvа језику
Тематска јединица 1.1. Основни концепти у Јаvа језику
Подсећање студента на основне концепте у Java језику како би остатак курса могао да испрати неометано
Основни концепти у Јаvа језику
Раднанедеља
Тематска јединица
ЦИЉ УЧЕЊА
1 1.1. Основни концепти у Јаvа језику
Подсећање студента на основне концепте у Java језику како би остатак курса могао да испрати неометано
НАСТАВНИ МЕТОД: ПРЕДАВАЊА
Струткура предавања
• Типови података• Променљиве• Управљање током• Низови• Класе и објекти• Наслеђивање и полиморфизам• Интерфејси и апстрактне класе• Изузеци
Тип податка
• Тип податка се дефинише као скуп вредности (објеката) и операција над њима
• Прости типови података у Java језику– boolean – char – byte, short, int, long– float, double
• Сложени типови – структуре података
Променљиве
• Чувају конкретне вредности• Пренос преко вредности и преко адресе• Декларација:
int podatak;
• Додељивање вредностиpodatak = 27;int elem;elem = podatak;
Управљање током
• If исказ:
if ( 〈 boolean_expr 〉 ) 〈 true_statement 〉
[else if ( 〈 boolean_expr 〉 ) 〈 else_if_statement 〉 ]
[else 〈 else_statement 〉 ]
if (ocena == 5)System.out.println(“Pao je :(!");
elseSystem.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 (int i = 0; i < 5; i++){System.out.println(“Vrednost brojaca:“ + i);
}
• while петљаwhile ( 〈 uslov 〉 ){
// telo petlje}
Управљање током
• Do-While петља
do {
// telo petlje}while ( 〈 uslov 〉 )
• Prekid iteracijebreakcontinue
Низови
• Уређена колекција (струткура) променљивих истог типа сукцесивно повезаних у меморији
• Индексирање елемената: 0 , n-1
〈 tip_niza 〉 [] 〈 naziv 〉new 〈 tip_niza 〉 [ 〈 velicina 〉 ]; int[] a = new int[10];
new 〈 tip_niza 〉 []{ 〈 inic_vred1 〉 ,〈 inic_vred2 〉 , ..., 〈 inic_vred_N 〉 }]; int[] b = new int[]{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
}
Класе
class Osoba {
// definicije promenljivih... // definicije metoda...
}
• Модификатори класа– abstract – final – public– bez modifikatora
Класе
public class Osoba{
// promenljive protected String Ime;protected int Starost;private Osoba Majka;public double visina = 1.76; // direktna inicijalizacijapublic static final int MAX_VISINA = 2.45; // konstanta
// Definicije metoda...}
Класе
• Декларисање методе:
[ 〈 modifikatori 〉 ] 〈 tip_pov_vred 〉〈 naziv 〉([ 〈 parametri 〉 ])
{ // telo metodе ...
}
• Потпис методе– Име методе– Број, тип и редослед параметара
Класе
• Модификатори методе:– private– protected– public– bez modifikatora
• Додатни модификатори– abstract– final– static
Објекти
• Објекат представља конкретно појављивање (инстанцу) неке класе
• Инстанцирање (прављење) објеката:
〈 naziv_klase 〉〈 naziv_objekta 〉 = new 〈 naziv_klase 〉([parametar, parametar, ...]);
Објекти
• Конструктор - посебна метода за иницијализацију
[modifikatori] 〈 naziv_klase 〉 ([ 〈 parametri 〉 ]) {
// Telo konstruktora... (inicijalizacija promenljivih)}
public Osoba (String ime, int starost) {
Ime = ime; Starost = starost;
}
Osoba novaOsoba = new Osoba(“Pera”, 24);
Наслеђивање
• Генерализација - специјализација
class Telo {potected String Naziv;public float Tezina;
public String staJeOvo(){return “Ово је тело”;
}}
class Automobil extends Telo {public int 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.public interface Sellable {
// opis objekta public String description();/* cena objekta */public int listPrice();// najniža prihvatljiva cenapublic int lowestPrice();
}
Интерфејси
public class Camera implements Sellable { private String descript; // opis kamere private int price; // cena private float resolution; // rezolucija kamere (MP)
public Camera(String desc, int p, float mp) { descript = desc; price = p; resolution = mp; } public String description() { return descript; } public int listPrice() { return price; } public int lowestPrice() { return price/2; } public float mp() { return resolution; }}
Sellable c = new Camera();
Апстрактне класе
• Између интерфејса и конкретне класе
• Апстрактне методе
• Није могуће инстанцирати објекат апстрактне класе
Апстрактне класе
public abstract class Osoba { private String Ime;public abstract int brojGodina();
public String vratiIme(){return Ime;
}}
public class Student extends Osoba{// obavezna implementacija apstraktnih metoda
}
Изузеци
• Неочекивани догађаји генерисани у току извршења програма
• Генерисање изузетка:
float del = 45/0; (DivideByZeroException)
if (index > size()) {
throw new Exception("No element at index " + index); }
Изузеци
public void goShopping() throws ShoppingListTooSmallException, 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 〉 ]