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