The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

Osnove programiranja - Java i Javascript
(materijal sa treninga)

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by , 2021-12-04 11:42:21

Hajde i ti postani "AJ TI"

Osnove programiranja - Java i Javascript
(materijal sa treninga)

Keywords: training,student,javascript,java,programming,basics

Osnovi programiranja Sadržaj
Java i Javascript
Uvod u Java programiranje.................................3
Osnovni elementi Jave.......................................11
Izrazi.................................................................... 19
Složene naredbe................................................23
Metodi.................................................................29
Objekti i klase.....................................................33
Nizovi.................................................................. 41
Inheritance.........................................................45
Java Collections.................................................47
Izuzeci (Exceptions)........................................... 51
Primeri i zadaci..................................................55



01 – Uvod u Java programiranje

01
Uvod u Java programiranje

Računari i programi

y Računar je elektronski uređaj koji se sastoji od hardvera i softvera.
y Osnovni princip rada računara je izvršavanje programa

čime se postiže odgovarajuća funkcionalnost.

Računarski program

Podaci koje program dobija od korisnika nazivaju se ulazni podaci, a rezultat rada
programa nazivaju se izlazni podaci.

3

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Osnovni funkcionalni delovi

y Procesor
y Glavna memorija
y Ulazno / izlazni uređaji
y Sabirnica (magistrala)

Mašinski jezik

Procesori računara su napravljeni tako da mogu izvršavati naredbe koje
su napisane na vrlo prostom jeziku koji se naziva mašinski jezik.

Rad procesora (CPU)

4

01 – Uvod u Java programiranje

Programski jezici visokog nivoa

y Programski jezici koji su prilagođeni ljudima nazivaju
se jezici visokog nivoa (C, C++, C#, Java).

y Proces prevođenja programa na mašinski jezik naziva se kompiliranje.
y Alternativa prevođenju programa (kompilacija) na

mašinski jezik naziva se interpretiranje.

Java virtuelna mašina

U programskom jeziku Java koristi se malo drugačiji pristup za prevođenje na mašinski
jezik i sastoji se od kombinacije kompiliranja i interpretiranja.

Prednosti Java bytecode-a

y Platformski nezavisan programski jezik – “write once, read anywhere” (WORA)
y Nedostatak kod drugih jezika kao što su C, C++

Istorijski razvoj

Programski jezik Java je nastao 1990. godine u kompaniji
Sun Microsystems kao pilot-projekat jednostavnog
jezika za programiranje “pametnih” kućnih uređaja

James Gosling

5

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Java platforma

y Java SE (Standard Edition)
y Java ME (Micro Edition)
y Java EE (Enterprise Edition)

Osobine Java-e

y Jednostavnost
y Objektna orijentisanost
y Robustnost
y Nezavisnost od platforme
y Interpretiranost i visoka efikasnost
y Višenitnost

Osnovni sastavni delovi programa

Postoje dva osnovna aspekta u programiranju:
y Podaci (promenljive i tipovi podataka)
y Naredbe (control structures and subroutines)

interest = principal * 0.07;

y Control structures
º Loops
º Branches

if (principal > 10000)
interest = principal * 0.05;

else
interest = principal * 0.04;

y Subroutines
º drawHouse();

6

01 – Uvod u Java programiranje

Objekti i OOP (Objektno orijentisano programiranje)

y Programi moraju biti dizajnirani
y Glavni koncept objektno orijentisanog programiranja je objekat

Klasa (Class)

Klasa je “nacrt” ili prototip od kojeg se stvaraju različiti objekti.

class Bicycle {
int cadence = 0;
int speed = 0;
int gear = 1;
void changeCadence(int newvalue) {
cadence = newvalue;
}

void changeGear(int newvalue) {
gear = newvalue;

}

void speedUp (int increment) {
speed = speed + increment;

}

void applyBrakes (int decrement) {
speed = speed - decrement;

}

void printStates() {
System.out.println("cadence:" +
cadence + " speed:" + speed + " gear:" + gear);

}
}

7

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Interfejs (Interface)

Interfejs je grupa sličnih (povezanih) metoda sa praznim telima.

interface Bicycle {
// wheel revolutions per minute
void changeCadence(int newValue);
void changeGear(int newValue);
void speedUp(int increment);
void applyBrakes(int decrement);

}

Osnovni principi OOP-a

y Enkapsulacija
y Apstrakcija
y Nasleđivanje
y Polimorfizam

Paketi (packages)

y Paket je grupa povezanih (sličnih) tipova (klasa, interfejsa i potpaketa).
y Paketi mogu biti podeljeni u dve vrste:

º ugrađeni paketi i
º ručno definisani paketi

8

01 – Uvod u Java programiranje

Prednosti Java paketa

y Java paket se koristi za kategorizaciju klasa i intefejsa
tako da se mogu lako održavati.

y Pružaju zaštitu pristupa.
y Uklanjaju koliziju (mešanje) imena.

Instaliranje Java-e i podešavanje razvojnog okruženja

9



02 – Osnovni elementi Jave

02
Osnovni elementi Jave

Komentari

y Komentar je tekst na nekom prirodnom jeziku koji služi za
objašnjenje delova programa drugim programerima.

// Prikazivanje ocena svih studenata
int i = 0; // inicijalizacija broja studenata

Vrste komentara

Postoje tri vrste komentara:
y Kratki komentari u jednom redu
y Komentari u više redova
y Komentari u vidu dokumentacije

11

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Imena

y Imena su osnove programiranja. U programima nazivi
(imena) odnose se na najrazličitije stvari.

y Prema pravilima u Java-i imena moraju počinjati sa slovom ili donjom
crtom i ostatak imena mora sadržati slova, brojeve ili donju crtu

N n rate x15 quite_a_long_ttame HelloWorld

Promenljive

y Promenljiva je ime nekog podatka koja čuva adresu tog podatka u
memoriji (odnosi se na uskladištenje podatka u memoriji).

y Jedini način za dodelu neke verdnosti jednoj promenljivi
ispunjava se pomoću takozvane naredbe dodele:

promenljiva = izraz;

y Primer:

rate = 0.07;

Vrste promenljivih

Složenija naredba dodele

y Koristeći operaciju množenja u sledećem izrazu pokazuje se
umnožavanje vrednosti dveju promenljiva (rate i principal):

interest = rate * principal

y rate i principal su same po sebi, posebne, druge dve promenljive.

Konstante

y Konstante su promeljive čije se vrednosti ne mogu
promeniti nakon dodele početne vrednosti

y U Javi se u deklaraciji neke promenljive može dodati službena reč final
kako bi se obezbedilo da se vrednost te promenljive ne može menjati

final int MAX_POINTS = 100;

12

02 – Osnovni elementi Jave

Tipovi podataka

y Java je strogo tipiziran jezik, sto znači da sve promenljive moraju prvo
biti definisane (deklarisane). To uključuje tip i ime promenljive

y Primitivni tipovi – byte, short, int, long, float, double, char i boolean

int numberOfStudents;
String name;
double x, y;
boolean isFinished;
char firstlnitial,middlelnitial, lastInitial;

Primitivni tipovi

y byte – sastoji se od 8 bitova, koji predstavlja brojeve između -127 i 128
y short – sastoji se od 2 bajta (16 bita). Vrednosti mogu biti između -32768 i 32767
y int – sastoji se od 4 bajta (32 bita). Min -231, max 231 - 1
y long – sastoji se od 64 bita. Koristi se za veće vrednosti

od int vrednosti. Min -263, max 263 - 1
y float – predstavljen je sa 4 bajta u memoriji. Koristi se za decimalne

brojeve. Preciznost iznosi najviše 6 cifre iza zareza
y double – takođe za predstavljanje decimalnih brojeva sa većom

preciznošču od float brojeva. Preciznost – najviše 15 cifara iza zareza
y boolean – ima samo dve moguće vrednosti: true i false
y char – zauzima 2 bajta u memoriji. Njegova vrednost može biti

jedinstven karakter (simbol) kao na primer: ’A’, ’x’, ’’

Default vrednosti

Data Type Default Value (for fields)
byte 0
short 0
int 0
long OL
float 0.0f
double 0.0d
char \u0000'
String (or any object) null
boolean false

13

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Literali

y Literali (literals) se koriste da izraze konkretne
vrednosti bilo kog tipa unutar programa

y Literal može biti konstantna vrednost primitivnog tipa ili String objekta

boolean result = true;
char capitalC = *C*;
byte b = 100;
short s = 10000;
int 1 = 100000;

Standardne klase u Java-i

Klase u Javi imaju dve različite funkcije
º Da grupišu zajedno promenljive i metode (potprograme)
º Da opisuju objekte (klasa je tip nekog podatka, a objekat je vrednost)

y Java sadrži veliki broj standardnih klasa sa unapred napisanim
metodima koji se mogu koristiti u našim programima

y Metod je podprogram koji obavlja neki specifični zadatak. Metod je ”crna
kutija” koja se može koristiti bez poznavanja šta se nalazi u toj kutiji

Klasa String

y String-ovi predstavljaju nizove znakova. U programskom jeziku Java to su objekti.
y Kreiranje String-ova:

String greeting = “Hello world”;

14

02 – Osnovni elementi Jave

Dužina String-ova

y Dužina String-ova određuje se pomoću metoda length(); Taj metod
nam daje broj karaktera (simbola) koji se nalaze u String objektu.

String palindrome = “Dot saw I was Tod”;
int len = palindrome.lenght();

y Dužina ovog string-a je 17.

Konkateniranje String-ova

The String class includes a method for concatenating two strings:

stringl.concat(string2);

This returns a new string that is stringl with stringl added to it at the end.
You can also use the concat() method with string literals, as in:

"My name is ".concat("Rumplestiltskin");

Strings are more commonly concatenated with the + operator, as in

"Hello," + " world" + "!"

which results in

"Hello, world!"

The + operator is widely used in print statements. For example:

String string1 + "saw I was ";
System.out.println("Dot " + string1 + "Tod");

which prints

Dot saw I was Tod

15

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Operacije sa String-ovima

y s1.equals(s2) – kao rezultat daje logičku vrednost true ako se
string1 sastoji od tačno istog niza znakova kao string2

y s1.equalsIgnoreCase(s2) – proverava kao prethodni metod,
ali se pri tome mala slova ne razlikuju od velikih

y s1.chartAt(n) – n je ceo broj i kao rezultat ovaj metod daje
znak tipa char koji se nalazi na n-toj poziciji string-a s1

y s1.substring(n, m) – n i m su celi brojevi a kao
rezultat daje podniz (deo) string-a s1

y s1.indexOf(s2) – kao rezultat daje ceo broj koji predstavlja
poziciju prvog pojavljivanja podniza s2 u string-u s1

y s1.toUpperCase() – kao rezultat daje novi string koji je jednak
string-u s1, osim što se sva mala slova pretvaraju u velika

y s1.trim() – kao rezultat daje novi string koji je jednak
string-u s1, osim što su svi razmaci izbrisani

Klasa System

y System je jedna ot standardnih klasa u Javi.
y Jedna od funkcija ove klase je, na primer, učitavanje ulaznih

podataka i prikazivanje izlaznih podataka

System.out.println(“Hello World”);
System.exit(0); System.exit(-1);

Klasa Math

y Za mnoge matematičke funkcije u Javi postoje metodi koji
izračunavaju i vraćaju vrednost. Ti metodi su deo klase Math

y Math.sqrt(x) – ako je x numerička vrednost, ovaj metod
će izračunati i vratiti kvadratni koren tog broja x

y Math.abs(x) – izračunava apsolutnu vrednost broja x
y Math.pow(x, y) - izračunava broj x na stepen y
y Math.floor(x) – odbacuje decimale realnog broja x
y Math.round(x) – zakoružuje broj x do najbližeg celog broja
y Math.random() – kao rezultat daje proizvoljan (slučajni) broj
y Math.PI – konstanta koja sadrži vrednost broja pi (π)

16

02 – Osnovni elementi Jave

Klasa Scanner

y Iz paketa java.util dolazi nam klasa Scanner koja
olakšava učitavanje ulaznih podataka

y Metodi u klasi Scanner nisu statički, već je potrebno
konstruisati objekat da bi se koristili

Scanner keyboard = new Scanner(System.in);

Osnovni metodi klase Scanner

y Keyboard.next() – preko tastature se učitava sledeći niz znakova do prvog
novog reda, razmaka ili tabulatora i vraća kao rezultat vrednost tipa String

y Keyboard.nextInt(), keyboard.nextDouble() itd. – preko
tastature se učitava sledeća vrednost tipa int, double itd.

y Keyboard.nextLine() – preko tastature se učitava sledeći
niz znakova do kraja reda (znaka za novi red)

y Keyboard.hasNext(), keyboard.hasNextInt(), keyboard.hasNextLine()

Klase omotači (Wrapper classes)

y Autoboxing – automatsko konvertiranje gde Java kompilator
pravi između primitivnog tipa i njegove klase omotača. Na primer
konvertovanje int u Integer, double u Double itd.

y Unboxing – konvertovanje u suprotnom smeru – Integer u int, Double u double itd.

Primitive type Wrapper class
boolean Boolean
byte Byte
char Character
float Float
int Integer
long Long
short Short
double Double

Autoboxing - Double d = new Double(5.378);

Unboxing – Double d2 = d.doubleValue();

17



03 – Izrazi

03
Izrazi

O izrazima

y Izraz je deo programskog koda koji predstavlja ili izračunava neku vrednost.
y Izraz može da bude literal, promenljiva, pozivi metoda ili neki od tih

primera koji su kombinovani sa nekim operatorima (+ ili – na primer).

Prosti i složeni izrazi

y Literali, promenljive i pozivi metoda smatraju se prostim izrazima
y Složeni izrazi se grade kombinovanjem prostih izraza sa dozvoljenim

operatorima (aritmetičkim, relacijskim i drugim)
y Primer: 2 * r * Math.PI
y Prioritet operatora:  x + y * z

Aritmetički operatori

y Osnovni aritmetički operatori u Javi odgovaraju matematičkim operacijama
sabiranja, oduzimanja, množenja i deljenja sa oznakama: +,  -,  *,  /

y Rezultat deljenje dva cela broja je isto ceo broj (7 / 3 = 2)
y Operator za izračunavanje ostatka pri celobrojnom deljenju (7 % 2 = 1)

Inkrementiranje i dekrementiranje

y Dodavanje jedinice nekoj promenljivi naziva se inkrementiranje
(++), a oduzimanje dekremetiranje (--)

y y = x++; y = ++x;

19

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Relacijski operatori

y Logički izrazi daju vrednost boolean promenljive true ili false
y Gradivni elementi logičkih izraza su relacijski operatori:

º x == y  true ako je x jednako na y, u suprotnom false
º x != y  true ako je x različito (nije jednako) od y
º x < y  true ako je x manje od y
º x > y  true ako je x je veće od y
º x <= y  true ako je x manje ili jednako y
º x >= y  true ako je x veće ili jednako y

Boolean (logički) operatori

y && - AND operator služi za kombiniranje dve ili više boolean vrednosti. Rezultat je
true ako su obe (mogu biti i više) vrednosti true ili false, ako je jedna od njih false

º (x != 0) && (y / x > 1)

y || - OR operator. Rezultat je true ako je bar jedna od vrednosti u izrazu true

º x > 1 || y > 2

y ! – NOT operator

º test = !test

Operatori izbora

y Ternary operator – logički-izraz ? izraz1 : izraz2
y Primer:

n = (m % 2 == 0) ? (2 * m) : (m – 1)

Operatori dodele

y Operator dodele: promenljiva = izraz
y Različite varijacije operatora dodele:

º x -= y; (isto što i x = x – y)
º x += y; (isto što i x = x + y)
º x /= y; (isto što i x = x / y)
º n %= m; (isto što i n = n % m)
º p &&= q; (isto što i p = p && q)

20

int cadence = 0; 03 – Izrazi
int speed = 0;
int gear = 1; Operatori
+, -, ++, --, eksplicitna konverzija
Prioritet operatora *, /, %
+, -
Kategorija <, >, <=, >=
Unarni operatori ==, ! =
Množenje i deljenje &&
Sabiranje i oduzimanje | |
Relacijski operatori ?:
Jednakost i nejednakost =, +=, -=, *=, /=, %=
Logičko I
Logičko ILI
Operator izbora
Operatori dodele

21



04 – Složene naredbe

04
Složene naredbe

O složenim naredbama

y Složene naredbe se grade od prostijih programskih elemenata i
dobijaju se: blok naredbi, naredbe grananja, naredbe ponavljanja

y Od ove tri vrste složenijih naredbi, jedino se blokom naredbi određuje
sekvencijalni redosled izvršavanja naredbi od kojih se taj blok sastoji

y Grananja i ponavljanja menja uobičajeni način izvršavanja programa

Blok naredbi

y Koristi se za grupisanje niza naredbi u jednu naredbu. Format je:

{
(naredbe)

{

23

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Blok koji ne sadrži nijednu naredbu naziva se prazan blok

{
System.out.print("The answer is ");
System.out.println(ans);
}
{// This block exchanges the values of x and y
int temp;  // A temporary variable for use in this block.
temp = x;  // Save a copy of the value of x in temp.
x = y;  // Copy the value of y into x.
y = temp;  // Copy the value of temp into y.
}

Naredbe grananja

y Naredbe grananja obezbeđuju alternativne puteve za tok izvršavanja
programa zavisno od vrednosti nekog logičkog izraza

y U naredbe grananja spadaju: if, if-else, switch

Naredba if

y if naredba govori našem programu da izabere jednu od dva alternativna toka radnji,
zavisno od toga dali je vrednost naredbe true ili false

Naredba if-else

y Ako je vrednost logičkog izraza u zagradi netačna, onda se često izvršenje
programa treba ”preusmeriti” da uradi nešto drugo

24

04 – Složene naredbe

Naredba if-elseif-else

Naredba switch

y Specijalni slučaj naredbe višestrukog grananja. Koristi se kada
imamo veliki broj slučaja koji zavise od nekog izraza

y Vrednost izraza može biti samo određenog tipa: int, short, byte, char

25

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

y Naredbe ponavljanja

y Naredbe ponavljanja obezbeđuju ciklično izvršenje nekog bloka
naredbi više puta i zato se ove naredbe još nazivaju petlje

y Naredbe ponavljanja u Javi su
º while
º do-while
º for

Naredba while

y Petlja while koristi se za izvršavanje nekog bloka naredbi više puta. Blok naredbi
naziva se telo petlje, a jedno izvršavanje tela petlje naziva se iteracija.

Naredba do-while

y Kod naredbe while uslov prekida petlje se proverava na početku svake iteracije, a
ovde se proverava na kraju svakog izvršavanja tela petlje.

Break i continue

y Break – prekida petlju i izvršavanja tela petlje
y Continue – umesto prekidanja izvršavanja cele petlje, continue prekida samo

trenutnu iteraciju i nastavlja sa izvršavanjem sledeće interacije

26

04 – Složene naredbe

Naredba for

y For petlja je ekvivaletna while petljama, ali u nekim situacijama
mnogo je prostije i bolje koristiti for petlju.

y Prvi red for petlje sastoji se od inicijalizacije, uslova dokle će se telo petlje
ispunjavati i poslednji deo je redaktiranje vrednosti promenljive koja je inicijalizirana
na početku.

27



05 – Metodi

05
Metodi

O metodima

y Jedan od načina za razbijanje jednog programa na manje
delove postiže se korišćenjem metoda.

y Metodi u Javi su potprogrami koji obavljaju neki specifični zadatak (niz naredbi).

Definisanje metoda

Modifikatori za dostup

29

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Main metod

y U zaglavlju ove definicije metoda main(), službene reči public i static
su primeri modifikatora, void je tip rezultat, main je ime metoda I, na
kraju, String[] args u zagradama predstavlja parameter metoda

public static void main(String[] args) { // Zaglavlje metoda
º
º // Telo metoda
º

}

Pozivanje metoda

Metod se ne izvršava sve dok se ne pozove na nekom mestu u programu.

Prenošenje po vrednosti (Pass by value)

void prikaži() {
int x = 1;
dodaj1(x);
System.out.println("x = " + x),

}
void dodaj1(int a) {

a = a + 1;
}

30

05 – Metodi

Vraćanje rezultata (return)

y Metod u javi može vraćati jednu vrednost koja se dobija kao rezultat poziva metoda
y Metod koji ne vraća nikakvu vrednost ima tzv. void tip

return expression;
double obim(double a, double b) {
double c = Math.sqrt ( a*a + b*b ); // hipotenuza trougla
return a + b + c;                // obim trougla
}

Vraćanje klase ili interfejsa kao rezultat

Overloading methods

31

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Lokalne i globalne promenljive

y Promenljive definisane unutar nekog metoda nazivaju se lokalne promenljive
y Polja (promenljive) definisana u klasi nazivaju se globalne
y Lokalne promenljive moraju biti inicijalizirane, dok globalne ne
y Alociranje i delociranje promenljive

Scope promenljive

y Oblast programa u kome se može upotrebiti neka promenljiva naziva se scope
promenljive (gde važi i gde ne)

Rekurzivni metodi

y Metodi u Javi mogu u svojoj definiciji pozivati sami sebe. Takav načon rešavanja
problema naziva se rekurzija

32

06 – Objekti i klase

06
Objekti i klase

Objektno orijentisano programiranje (OOP)

y OOP je noviji pristup za rešavanje problema na računaru kojim se
rešenje opisuje na prirodan način iz svakodnevnog života

y Java je moderan objektno orijentisan programski jezik koji podržava
sve koncepte objektno orijentisanog programiranja

Klase

y Na sledećem višem nivou složenosti su programske celine koje se nazivaju klase
y Sastoje se od polja za čuvanje podataka i metoda za manipulisanje tim podacima

class MyClass {
// field, constructor, and
// method declarations

}

Članovi klase

y U telu klase definišu se polja i metodi koji se jednim imenom nazivaju članovi klase
y Članovi mogu biti statički (modifikator static) ili nestatički (objektni)
y Klase služe za konstruisanje objekata i oni se još nazivaju instance datog objekta

33

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Deklarisanje klase

y Opšti oblik definicije klase u Javi:
y Osnovne komponente deklarisanja klase

º Mogu se koristiti modifikatori za dostup kao public, private i protected
º Ime klase uvek počinje velikim slovom
º Telo klase nalazi se u vitičastim zagradama

modifikatori class ime-klase {
telo-klase

}

Promenljive klasnog tipa

y Deklarisanje promenljive klasnog tipa ne kreira objekat
y U Javi nijedna promenljiva ne može da drži objekat, ona

samo čuva referencu tog objekta – Student s;
y Konstruisanje objekata svake klase izvodi se posebnim operatorom – new
y Student s = new Student()

Objekat student

34

06 – Objekti i klase

Dodela null promenljivi klasnog tipa

U nekim slučajevima je potrebno naznačiti da promenljiva klasnog tipa ne ukazuje ni na
jedan objekat

Objekat u memoriji

35

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Još o promenljivama klasnog tipa

y Kreiranje objekta koristeći final

y Prenošenje klasnog tipa kao argument metoda

Konstrukcija objekata

y Konstruisanje – rezervisanje dovoljno mesta u heap memoriji
za smeštanje objekta i inicijalizacije njegovih polja

y Pri konstruisanje poljima se dodeljuju default vrednosti
i dodele null poljima klasnog tipa

Konstruktor

y Objekti se kreiraju pomoću operatora new

y Konstruktor je specijalan tip metoda
y Ako ne definišemo mi konstruktor, onda će se pozvati default-

ni konstruktor koji se kreira za svaku klasu
y Definicija konstruktora

º Ime konstruktora mora biti isto kao ime klase u kojoj se definiše
º Jedini dozvoljeni modifikatori su public, private i protected
º Konstruktor nema tip rezultata za vraćanje, čak ni void

36

06 – Objekti i klase

Uklanjanje objekata

y Šta radimo ako objekat više nije potreban?
y U drugim jezicima programer treba brinuti o oslobađanju

memorije, dok u Javi se tp dešava automatski

Student std = new Student("John Smith");
std = null;

Garbage collection

y U Javi se koristi procedura nazvana “sakupljanje otpadaka” (garbage collection) koja
čisti memoriju okupirana od objekata koji više nisu dostupni (nepotrebni) programu

y Problemi – curenje memorije (memory leak)

Heap memorija

37

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Enkapsulacija

y Sva polja klase da budu skrivena i definisana modifikatorom private
y Prednost je to što su sva polja zaštićena unutar “čaure”
y Get i set metodi (geteri i seteri)

38

06 – Objekti i klase

Službena reč this

y Ova reč referira do trenutni objekat u nekom metodu ili konstruktoru
y Najčešće se koristi da ne bi zbunjivali naš program o tome da li da koristi polja klase

ili parametre sa istim imenom (primer kod konstruktora)

Korišćenje this službene reči

y Poziv konstruktora trenutne klase
y Poziv metoda u trenutnoj klasi
y Vraćanje objekta trenutne klase
y Dodavanje argumenta u pozivu metoda
y Dodavanje argumenata u pozivu konstruktora

39



07 – Nizovi

07
Nizovi

Jednodimenzionalni nizovi

y Niz je struktura podataka koja predstavlja numerisan niz promenljivih istog tipa
y Pojedinačni delovi jednog niza naizvaju se elementi, a

njihov redni broj u tom nizu naziva se indeks
y Ukupan broj elemenata naziva se dužina niza

Jednodimenzionalni niz

Definisanje nizova

y Niz se definiše na sledeći način:

41

Projekat Ti4IT – Osnovi programiranja - Java i Javascript
int[] a = new int[100];

Definisanje nizova klasnog tipa

y Student[] s = new Student[15];
y U opštem slučaju, ako je N celobrojni izraz, onda se

operatorom new u izrazu konstruiše niz objekata

new bazni-tip[N]

y Nakon konstruisanja nekog niza broj elemenata tog niza se ne može promeniti

int k = 5;
double[] x = new double[2*k+10];

Definisanje niz objekata

Student pera = new Student("Pera Perić", 1111, 99, 100, 100);
Student[] odlikaši = new Student[] {

pera,
new Student("Laza Lazić", 2222, 99, 95, 100),
new Student("Mira Mirić", 3333, 100, 100, 100)
};

Korišćenje nizova

y Elementi niza mogu biti obične promenljive baznog tipa niza i mogu se koristiti u
programu na svim mestima gde je dozvoljena upotreba promenljive baznog tipa niza

y int[] a = new int[1000];
y Petlja kojom se na ekranu pokazuje vrednost svih elemenata niza a

for (int i = 0; i < a.lenght; i++)
System.out.ptintln(a[i]);

42

07 – Nizovi

Klasa Arrays

y U Javi se može koristiti standardna klasa Arrays iz paketa java.util
y Ova klasa sadrži nekoliko statičkih metoda koji

obezbeđuju korisne operacije nad nizovima
º String toString(tip[] a) – vraća se reprezentacija niza a u obliku stringa
º tip[] copyOf(tip[] a, int n) – vraća se nova kopija

niza a koja se sastoji od prvih n njegovih elemenata
º void sort(tip[] a) – sortira se niz a u mestu u rastućem redosledu
º boolean equals(tip[] a, tip[] b) – vraća se vrednost true ukoliko

nizovi a i b imaju istu dužinu i jednake odgovarajuće elemente

Metodi sa promenljivim brojem argumenata

y Od verzije Java 5 omogućeno je pozivanje metoda
sa promenljivim brojem argumenata

y prosek(1, 2, 3, 4)
y prosek(1.41, Math.Pl, 2.3)
y prosek(Math.sqrt(3))
y prosek()

public static double prosek (double... brojevi) {
double zbir = 0;
for (double broj : brojevi)
zbir = zbir + broj;
return zbir / brojevi.length;

}

Dvodimenzionalni nizovi

y Definiicija dvodimenzionalnog niza

int[][] a = new int[3][4];

y Inicijaliziranje:

43



08 – Inheritance

08
Inheritance

Inheritance - nasledjivanje
y Pomoću korišćenja nasleđivanja, već postojeće klase
mogu se koristiti za pravljenje novih klasi.
y Nova klasa koja poseduje neku postojeću klasu zadržava sve
članove postojeće klase osim privatnih članova.
y Direktna podklasa je nova klasa postojeće klase. Direktna
nadklasa je postojeća klasa nove klase.
y Naravno da klasa moze da dobije i nove članove
koja njegova direktna nadklasa nema.
y Koristeci ključnu reč extends deklarišemo da klasa nasledi neku postojeću klasu.

Polimorfizam

Polimorfizam predstavlja mogućnost da se jedan isti poziv metoda ponaša
različito u zavisnosti od tipa objekta nad kojim se metod primenjuje.

Nasledjivanje - override

y Metod koji je naveden u podklasi, ima isti tip parametara, tip vrednosti koju
vraća i isto ime, redefiniše odgovarajući metod iz nadklase. (override)

y Na taj način podklasa nasledi iz nadklase slična ponašanja ali može
i da promeni metode koji nisu adekvatni za novu podklasu.

Privatni članovi

y Podklasa ne može da nasleđuje privatne članove svoje nadklase.
y Članovima koji su deklarisani kao privatni se ne može direktno pristupiti u podklasi.
y Privatni članovi postoje i u podklasi ali nisu vidljivi.

45

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

Dinamičko vezivanje

y Promenljiva čiji je tip neka klasa može kao svoju vrednost dobiti
referencu bilo kog objekta čiji je tip ta klasa ili neka njena podklasa.

y Dinamičko vezivanje je tehnika koja se koristi da bi se tek u
toku izvršavanja programa odredili tipovi objekata.

Ključna reč - super

y Ako se nakon ključne reči super u zagradama navedu neke vrednosti, tada se
poziva konstruktor direktne nadklase tekuće klase. Ovakva primena ključne
reči super je moguća samo kao prva naredba u telu konstruktora klase. U
tom slučaju omogućena je inicijalizacija polja, nasleđenih iz nadklase

y Ključna reč super se može koristiti i ako hoćemo da pristupimo nekom
metodu direktne nadklase koji je u podklasi redefinisan.

Apstraktna klasa

y Apstraktna klasa se koristi samo da bude nasleđivana od strane drugih klasi.
y Deklaracija apstraktnog metoda se sastoji samo od reči

abstract, zaglavlja metoda i tačke-zareza.
y Apstraktna klasa može da sadrži apstraktne metode, ali i ne mora. Ako neka

klasa sadrži bar jedan apstraktni metod, tada ona takođe mora biti apstraktna

Interface

Interface u javi je mehanizam za postizanje
potpune apstrakcije. U java interfejsu mogu
postojati samo apstraktni metodi bez tela
metoda. On se koristi za postizanje pune
apstrakcije i višestrukog nasledjivanja u Javi.

y Višestruko nasleđivanje nije podržano preko
klasa ali je moguće pomoću interfejsa. Interface
nam služi da klasa nasledi više postojećih klasa.

y Pomoću ključne reči implements deklarišemo
da klasa nasledi neku postojeću klasu.

46

09 – Java Collections

09

Java Collections

Šta je to Java Collections framework?

y Java Collections je kolekcija interfejsa i klasa koje pomažu
da efikasno upravljamo i obrađujemo podatke

y Sastoji se od nekoliko klasa koje imaju mnoštvo
metoda koji olakšavaju rad programerima

Hijerarhija

47

Projekat Ti4IT – Osnovi programiranja - Java i Javascript

List interfejs

ArrayList

y Ova klasa implementira List interfejs i koristi se kao alternativa
za nizove baš zato što je bazirana na nizovima (arrays)

y ArrayList je implementacija koja može menjati svoju veličinu dinamički

ArrayList vs. Array

y Osnovna razlika je ta, što nizovi imaju fiksiranu veličinu (broj elemenata),
dok ArrayList-a je dinamička kad govorimo o broju elemenata

y Kod nizova kad pravimo inicijalizaciju moramo da zadamo
broj elemenata, dok kod ArrayList-e ne moramo

y Nizovi imaju length za dužinu niza, dok kod ArrayList-e imamo metoda size()

Kreiranje ArrayList-e

ArrayList<String> alist=new ArrayList<String>();

Similarly we can create ArrayList that accepts int elements.

ArrayList<Integer> list=new ArrayList<Integer>();

Dodavanje elemenata ArrayList-i

y Da bi dodali elemenat ArrayList-i mozemo koristiti metod add()
y Ako želimo da dodamo elemenat na kraju liste, možemo napisati sledeće:

alist.add("Steve"); //This will add "Steve" at the end of List

y Ako želimo da dodamo elemenat na specifičnoj lokaciji (indeksu):

alist.add(3, "Steve"); //This will add "Steve" at the fourth position

48


Click to View FlipBook Version