You are on page 1of 11

Autori:

Daniel Bele
Filip Tomi
Danijel Kuak, dipl.ing.

Urednik:
Domagoj Ruak, mag.ing.aedif.

Naslov:
OSNOVE JAVA PROGRAMIRANJA ZA ANDROID

Izdanje:
2. izdanje

Struni recenzent:
Ivan Mesic

Lektorica:
Iva Lednicki

Grafiki urednik:
Kreimir Pletikosa, ACE

Nakladnik:
Algebra d.o.o., 2015.

Za nakladnika:
mr.sc. Mislav Balkovi, dipl.ing.

Mjesto i godina izdanja:


Zagreb, 2015.

Sva prava pridrana. Niti jedan dio ove knjige ne smije se reproducirati ili prenositi u bilo
kojem obliku, niti na koji nain. Zabranjeno je svako kopiranje, citiranje te upotreba knjige u
javnim i privatnim edukacijskim organizacijama u svrhu organiziranih kolovanja, a bez
pisanog odobrenja nositelja autorskih prava.

Copyright Algebra d.o.o.

CIP zapis dostupan u raunalnom katalogu Nacionalne i Sveuiline knjinice u Zagrebu pod
brojem 

ISBN 978-953-322-198-4
Sadraj:
1. Poglavlje: UVOD........................................................................................................................................................ 3
1.1 Povijesni razvoj i osnovna svojstva Jave ........................................................................................................... 4
1.2 Java platforma ................................................................................................................................................... 4
1.2.1 Kako radi Java ............................................................................................................................................... 4
1.3 Razvoj Java programa ....................................................................................................................................... 6
1.3.1 Prevoenje Java aplikacija ............................................................................................................................ 6
1.3.2 Izvravanje Java aplikacija ............................................................................................................................ 7
1.3.3 Appleti ........................................................................................................................................................... 7
1.4 Klase i objekti u Javi kratki uvod ..................................................................................................................... 8

2. Poglavlje: UVOD U RAZVOJNE ALATE ................................................................................................................. 11


2.1 to je Eclipse? ................................................................................................................................................. 12
2.2 Instalacija Eclipsea .......................................................................................................................................... 12
2.2.1 Java Runtime Environment JRE ............................................................................................................... 12
2.2.2 Java Development Kit ................................................................................................................................. 13
2.2.3 Eclipse ......................................................................................................................................................... 13

3. Poglavlje: OSNOVNE STRUKTURE JAVA PROGRAMSKOG JEZIKA ................................................................. 15


3.1 Varijable i izrazi................................................................................................................................................ 16
3.1.1 Cjelobrojne varijable .................................................................................................................................... 16
3.1.2 Decimalne varijable ..................................................................................................................................... 18
3.1.3 Znakovne varijable ...................................................................................................................................... 19
3.1.4 Logike varijable.......................................................................................................................................... 20
3.1.5 Predefinirane vrijednosti primitivnih tipova i prioritet operatora ................................................................... 20
3.1.6 Pretvaranje izmeu podatkovnih tipova....................................................................................................... 22
3.1.7 Matematike funkcije i konstante ................................................................................................................. 23
3.1.8 Komentari u programskom kodu ................................................................................................................. 24

4. Poglavlje: PETLJE I KONTROLA TIJEKA ............................................................................................................. 27


4.1 Iskazi kontrole tijeka programa ........................................................................................................................ 28
4.1.1 Iskaz if - else ............................................................................................................................................... 28
4.1.2 Iskaz switch ................................................................................................................................................. 30
4.1.3 Uvjetni operator ........................................................................................................................................... 32
4.2 Iteracijski iskazi ................................................................................................................................................ 33
4.2.1 While petlja .................................................................................................................................................. 33
4.2.2 Do..while petlja ............................................................................................................................................ 34
4.2.3 For petlja ..................................................................................................................................................... 35

5. Poglavlje: POLJA .................................................................................................................................................... 39


5.1 Polja................................................................................................................................................................. 40
5.1.1 Pristupanje elementima polja ...................................................................................................................... 41
5.1.2 Viedimenzionalna polja.............................................................................................................................. 42
5.1.3 Korisne operacije nad poljima ..................................................................................................................... 49
5.1.4 ArrayList klasa ............................................................................................................................................. 51

6. Poglavlje: NIZOVI ZNAKOVA ................................................................................................................................. 55


6.1 Klasa String ..................................................................................................................................................... 56
6.1.1 Spajanje ( engl. concatenating ) nizova znakova ........................................................................................ 57
6.1.2 Metoda charAt()........................................................................................................................................... 57
6.1.3 Metoda equals() .......................................................................................................................................... 57
6.1.4 Metoda endsWith() ...................................................................................................................................... 58
6.1.5 Metoda indexOf() ......................................................................................................................................... 58
6.1.6 Metoda length() ........................................................................................................................................... 59
6.1.7 Metoda split()............................................................................................................................................... 60
6.1.8 Metoda startsWith() ..................................................................................................................................... 60
6.1.9 Metoda substring() ...................................................................................................................................... 61
6.1.10 Metoda toLowerCase()............................................................................................................................ 61
6.1.11 Metoda toUpperCase()............................................................................................................................ 62
6.1.12 Metoda trim()........................................................................................................................................... 62
7. Poglavlje: KLASE .................................................................................................................................................... 65
7.1 Uvod ................................................................................................................................................................ 66
7.1.1 Deklaracija klase ......................................................................................................................................... 66
7.1.2 Modifikatori pristupa .................................................................................................................................... 67
7.1.3 Instanciranje objekata ................................................................................................................................. 67
7.1.4 Konstruktori ................................................................................................................................................. 71
7.1.5 Kljuna rije this .......................................................................................................................................... 73
7.1.6 Unitavanje objekata ................................................................................................................................... 73
7.2 Paketi ............................................................................................................................................................... 74
7.2.1 Stavljanje klase u paket ............................................................................................................................... 74
7.3 Statiki lanovi ................................................................................................................................................. 75
7.3.1 Statiki uvoz ................................................................................................................................................ 77
7.3.2 Statike metode za pristup statikim poljima ............................................................................................... 78
7.3.3 Koritenje statikog inicijalizacijskog bloka.................................................................................................. 78
7.4 Metode ............................................................................................................................................................. 79
7.4.1 Preoptereivanje metoda i konstruktora ...................................................................................................... 79

8. Poglavlje: NASLJEIVANJE I POLIMORFIZAM.................................................................................................... 81


8.1 Nasljeivanje ................................................................................................................................................... 82
8.2 Polimorfizam .................................................................................................................................................... 88
8.3 Apstraktne klase .............................................................................................................................................. 90
8.4 Klasa Object .................................................................................................................................................... 91
8.5 Metode s promjenjivim brojem argumenata ..................................................................................................... 93

9. Poglavlje: SUELJA ............................................................................................................................................... 95


9.1 Suelja............................................................................................................................................................. 96
9.2 Nasljeivanje suelja ....................................................................................................................................... 98
9.3 Suelja i viestruko nasljeivanje .................................................................................................................... 98
9.4 Koritenje suelja............................................................................................................................................. 99

10. Poglavlje: IZNIMKE ........................................................................................................................................... 103


10.1 Uvod .............................................................................................................................................................. 104
10.2 Iznimke u Javi ................................................................................................................................................ 104
10.2.1 try/catch/finally blok ............................................................................................................................... 104
10.2.2 Podjela iznimaka ................................................................................................................................... 105
10.2.3 Obraivanje vie iznimaka i redoslijed obrade ...................................................................................... 110
10.2.4 throw i throws naredbe .......................................................................................................................... 112
10.3 Izrada vlastitih klasa iznimaka ....................................................................................................................... 113

11. Poglavlje: ULAZNO-IZLAZNI TOKOVI ............................................................................................................. 115


11.1 Osnovno o tokovima ...................................................................................................................................... 116
11.2 Binarni i znakovni tokovi ................................................................................................................................ 117
11.2.1 Binarni tokovi ........................................................................................................................................ 117
11.2.2 Znakovni tokovi ..................................................................................................................................... 118
11.3 Meuspremnici .............................................................................................................................................. 119
11.4 Dohvat podataka unesenih preko tipkovnice i ispis na konzolu ..................................................................... 121
11.4.1 Dohvat podataka preko tipkovnice ........................................................................................................ 121
11.4.2 Ispis podataka na konzolu..................................................................................................................... 121

12. Poglavlje: KOLEKCIJE ..................................................................................................................................... 125


12.1 Generiki tipovi .............................................................................................................................................. 126
12.2 Kolekcije ........................................................................................................................................................ 127
12.2.1 Kolekcijski okvir ..................................................................................................................................... 128
12.2.2 Suelje Collection ................................................................................................................................. 129
12.2.3 Suelje Set............................................................................................................................................ 129
12.2.4 Suelje List............................................................................................................................................ 141
12.2.5 Suelje Map .......................................................................................................................................... 147
12.2.6 Operacije na kolekcijama objekata ....................................................................................................... 154
1. Poglavlje: UVOD

U ovom poglavlju nauit ete:

; to je Java

; Osnovna obiljeja Jave

; Gdje i kako nabaviti Javu

; Prevoenje i izvravanje Java programa

; to je Applet
Str. 4 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID

1.1 Povijesni razvoj i osnovna svojstva Jave


Java je programski jezik razvijen poetkom 90-ih godina prolog stoljea u tvrtki Sun
Microsystems. Na elu razvojne skupine bio je James Gosling. Java je veinu svoje sintakse
naslijedila od C/C++ i Smalltalk jezika.

Osnovna je ideja razvojne skupine bila razviti novi jezik koji bi sintaksom sliio tadanjim
najpopularnijim jezicima (C/C++), ali koji bi s druge strane donio i neka nova svojstva, deficitarna u
tada postojeim jezicima.

Postojalo je 5 osnovnih ciljeva koje je Java kao novi programski jezik trebala dosei. Trebala je,
dakle, biti:
1. jednostavan i objektno orijentiran jezik,
2. neovisna o arhitekturi (portabilna),
3. robusna i sigurna,
4. programski jezik s visokim performansama te
5. interpretirana, vienitna i dinamina.

Moda je jedno od najvanijih svojstava Jave, i svakako svojstvo po kojem je Java poznatija,
portabilnost. Ideja je da se Java aplikacije razvijene na jednom operativnom sustavu mogu
nepromijenjene izvravati i na ostalim operativnim sustavima koji podravaju Javu, tj. koji imaju
instaliranu Java virtualnu mainu (JVM). Na taj je nain uteda vremena i resursa kod razvoja i
odravanja velikih aplikacija na razliitim platformama velika.

Java je objektno orijentirani programski jezik. Objektno orijentirane aplikacije jednostavnije su za


razumijevanje i odravanje od aplikacija koje nisu razvijane objektno orijentiranim pristupom. Ne
samo da je Java objektno orijentirana, ve ona izbjegava i neka svojstva koja su se u drugim
objektno orijentiranim programima pokazala ne ba najboljima, npr. viestruko nasljeivanje koje je
Java zabranila.

1.2 Java platforma


Java aplikacije mogu se izvravati na razliitim operativnim sustavima. Tako moete izvravati
Java aplikacije na Windows operativnom sustavu, Linuxu, Solarisu itd. To je mogue jer se Java
aplikacije ne izvravaju izravno na samom raunalu, nego unutar JVM-a. JVM je skup programa
koji kreiraju virtualno raunalo, odnosno raunalo unutar raunala koje je sposobno interpretirati
Java aplikacije, tj. izvravati ih. Svaki operativni sustav na kojem se ele izvravati Java aplikacije
mora imati instaliran JVM. JVM moemo shvatiti kao suelje (engl. interface) izmeu Java
aplikacije s jedne strane i samog operativnog sustava (s pripadajuom hardverskom platformom) s
druge strane. Sama JVM nije portabilna, ona je svojstvena operativnom sustavu.

1.2.1 Kako radi Java

Izvorni kd Java programa pie se u datotekama s ekstenzijom .java. Java prevoditelj (javac)
pretvara izvorni kd u objektni kd. Objektni kd esto zovemo i bajt kd, a sastoji se od jedne ili
vie datoteka s ekstenzijom .class. Objektni kd interpretira, odnosno izvrava Java interpreter,
sastavni dio JVM.
1. Poglavlje: UVOD Str. 5

Java izvorni
kod

Java prevoditelj Prevoditelj


pretvara Java
izvorni kd u
objektni kd

Java objektni
kd

Objektni kd se
provjerava i
puni u JVM

JVM (Java interpreter)

Java interpreter
izvrava
naredbe i
komunicira s
operativnim
sustavom stroja
Operativni sustav na kojem se
program izvodi
Str. 6 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID

1.3 Razvoj Java programa


Danas je mnogo raznih razvojnih okruenja za pisanje Java programa. Primjeri takvih razvojnih
okruenja su IBM Rational Application Developer, NetBeans, Borland JBuilder itd. Razvojna
okruenja nam svojim alatima asistiraju pri pisanju programa jer izmeu ostalog automatski
kreiraju odreene dijelove kda te oznaavaju sintaksu, to je vrlo korisna mogunost za iskusnije
programere. Koliko god je koritenje takvih alata pogodno programerima, za poetnike je bolje
krenuti u Java svijet bez koritenja tih alata jer oni esto generiraju kd koji poetnik ne razumije ili
nije ni svjestan da je uope generiran. Iz tih emo razloga za poetak koristiti Java Development
Kit (Java 2 platforma, standardno izdanje, verzija 8 ili novija; Java SE 8). Java Development Kit (u
daljnjem tekstu JDK) je skup alata (npr. prevoditelj), biblioteka klasa, izvedbenih okruenja (Java
Virtualna Maina) koji nudi sve to treba za kreiranje Java programa. Vrijedi napomenuti da i sva
spomenuta razvojna okruenja ispod povrine koriste JDK za prevoenje i izvravanje Java
programa. Sve o JDK-u moete pronai i besplatno ga skinuti s adrese
http://www.oracle.com/technetwork/java/javase/downloads/index.html.

1.3.1 Prevoenje Java aplikacija

Na poetku pisanja Java programa potreban nam je tekstualni editor. Tu nema nikakvih dodatnih
zahtjeva, prikladan je bilo koji tekstualni editor. Izvorna Java datoteka uvijek ima ekstenziju .java.
Jednom kad je izvorna datoteka kreirana i spremljena, treba ju prevesti. To radimo koristei
naredbu javac koja predstavlja poziv prevoditelju.

javac MojProgram.java

Ovdje je javac poziv prevoditelja koji se nalazi unutar JDK-a, a MojProgram.java je naziv
datoteke s Java izvornim kdom koju elite prevesti.

MojProgram.java - primjer

//MojProgram.java

public class MojProgram {


public static void main(String[] args) {
//ispisivanje teksta na standardni izlaz
System.out.println("Dobro doli u Java svijet!");
}
}

Program ima sljedei ispis:


Dobro doli u Java svijet!

Napomenimo da pri ovakvom pozivu prevoditelja, gdje ne navodimo putanju do .java datoteke,
pretpostavljamo da se ona nalazi u trenutano aktivnoj mapi.

Uz pretpostavku da u vaem programu nema pogreaka, produkt prevoenja je datoteka s tzv.


objektnim kdom (bajtkd, engl. bytecode) koja se kreira u istoj mapi kao i izvorna datoteka koju
smo preveli. Da je bilo (sintaktikih) pogreaka u izvornom kdu, prevoditelj ne bi generirao
objektni kd i ispisao bi poruke o grekama koje je pronaao pri pokuaju prevoenja.
1. Poglavlje: UVOD Str. 7

1.3.2 Izvravanje Java aplikacija

Za izvravanje objektnog kda koristimo naredbu java koja je takoer dio JDK-a.

java MojProgram

Vrlo je bitno primijetiti jedno vano obiljeje koje nam na prvu ruku moda izgleda i kao
nedosljednost. Kad prevodimo datoteku naredbom javac, obavezno piemo i ekstenziju datoteke
koju prevodimo. Kod pokretanja ne piemo extenziju .class.

1.3.3 Appleti

Osim programa koji se pokreu na prethodno opisani nain, postoje programi pisani u Javi koji se
izvravaju u malo drugaijem okruenju. Primjeri takvih programa su apleti. Apleti se izvravaju
unutar web-preglednika (internetskog preglednika). Tonije, aplet se izvrava unutar JVM-e koja je
instalirana u internetski preglednik (tzv. Java 2 plugin). Ideja apleta je dati internetskim
stranicama dinamiku, omoguiti im da mogu imati vie funkcionalnosti od istog prikazivanja teksta
i grafike. Aplet se ne pokree kao standardne java aplikacije koristei naredbu java, nego se
ucjepljuje unutar HTML stranice koristei odgovarajuu oznaku (engl. tag). Kad korisnik u
internetski preglednik utipka adresu neke internetske stranice koja sadrava i aplet, skupa se s
ostalim resursima (slike, javascript datoteke itd.) s web-posluitelja skida i objektni kd (.class
datoteka) apleta te se, ako preglednik ima instaliran Java plugin, aplet poinje izvravati unutar
preglednika.

MojAplet.java primjer:

//MojAplet.java

import javax.swing.JApplet;
import java.awt.Graphics;

public class MojAplet extends JApplet {


//ispisuje tekst na povrini apleta; vidjet e se unutar
//internet preglednika
public void paint(Graphics g) {
g.drawOval(20, 20, 400, 250);
g.drawString("Pozdrav iz apleta", 180, 150);
}
}

Ovdje neemo ulaziti u detalje, dovoljno je zasad znati da je ovo primjer apleta za koji imamo
mogunost prikazivanja unutar internetskog preglednika. Da bismo to mogli, treba nam i HTML
stranica koja ukljuuje aplet. To se radi pomou predefiniranog HTML taga <applet>. Potpuno je
nebitno o kojem je pregledniku rije, bitno je samo da je on Java enabled, tj. da ima ucijepljenu
Java virtualnu mainu.
Str. 8 OSNOVE JAVA PROGRAMIRANJA ZA ANDROID

Evo i primjera kako bi mogla izgledati HTML datoteka s ukljuenim apletom.

<html>
<head>
<title>Stranica sa ucijepljenim apletom</title>
</head>
<body>
<h1>Stranica sa ucijepljenim apletom</h1>
<applet code="MojAplet.class" width="800" height="600" />
</body>
</html>

Prethodni primjer unutar web-preglednika izgleda ovako:

1.4 Klase i objekti u Javi kratki uvod

Java je objektno orijentiran programski jezik. To je izjava koju ete uti ili proitati gdje god se
susreli s Javom. U ovom poglavlju neemo ii u detalje, ali emo pokuati u kratkim crtama poblie
pojasniti osnovne ideje objektno orijentirane paradigme primijenjene u Javi. Ako ste ve upoznali to
podruje, ovo e biti dobar podsjetnik i uvod u sljedea poglavlja, a ako niste, ovo je dobro mjesto
za uenje osnovnih ideja. U nekim emo od sljedeih poglavlja pojedine aspekte ove teme
detaljnije obraditi.

Jedno od osnovnih pitanja koja se postavljaju vezano za ovu temu jest pitanje zato uope postoji
objektno orijentirano programiranje, tj. zato uope primijeniti objektno orijentirani pristup ako su se
problemi rjeavali i prije pojave tih jezika?
Kad programirate u nekom od jezika koji ne koristi objektno orijentirani pristup, rjeenje je svakog
problema vie-manje izraeno u terminima brojki i slova, osnovnih vrsta podataka kojima
manipulirate u programu. U objektno orijentiranim jezicima pristup je drugaiji. Vi moete definirati
tipove podataka koji su relevantni upravo za problem koji rjeavate. Problem rjeavate koristei
pojmove i objekte iz stvarnog svijeta. Na primjer, ako se problem koji rjeavate tie studenata na
fakultetu, onda su potencijalni tipovi, odnosno objekti s kojima ete raditi u vaem Java programu
1. Poglavlje: UVOD Str. 9

Student, Kolegij, Ispit, Prijavnica itd. S druge strane, ako rjeavate problem u odjelu
raunovodstva, onda su oigledni kandidati za objekte u vaem programu Raun, Ponuda, itd.

Objekti su svuda oko nas. Studenti, kolegiji, automobili, biljke, ivotinje, mobiteli, rauni sve su to
primjeri nekih objekata. Kad kaemo student, mislimo openito, mislimo na skup svojstava koja
opisuju sve studente. Primjeri tih svojstava su broj indeksa, datum roenja, adresa stanovanja,
zavrena srednja kola. Nain na koji se u objektno orijentiranim okruenjima opisuje taj skup
zajednikih svojstava realnih entiteta je klasa.

Klasa je specifikacija, odnosno predloak koji definira svojstva koja opisuju odgovarajuu vrstu
objekata. Tako emo u klasi Student pokuati opisati zajednika svojstva svih studenata koji su
nam bitni u kontekstuproblema koji rjeavamo. Klasa se kroz sam programski jezik implementira
kao dio programskog kda. Ne postoji pravilo koje kae to se stavlja u klasu, a to ne. Kljuni
pojam koji se vee za definiranje klasa je apstrakcija. Apstrakcija znai odvajanje bitnog od
nebitnog u smislu konteksta problema koji rjeavamo. Konkretno, ako razvijamo poslovnu
aplikaciju koju e koristiti fakultet, tada je broj indeksa studenta nama bitna stvar, dok nas broj
otkucaja srca studenta ne zanima. Zato? Zato jer je to za na konkretan kontekst nebitna
informacija, dok bi ta (ista) informacija bila bitna u medicinskoj aplikaciji. Mi smo ti koji definiramo
klase tako da to najbolje odgovara problemu koji rjeavamo.

Slijedi primjer vrlo jednostavne definicije klase Student.

//Student.java

class Student {
//definicije svojstava studenta visoke kole
//koja svojstva ima student na visokoj koli ovisi
//o aplikaciji koja se razvija
int brojIndeksa;
String ime;
String prezime;
}

Klasama emo se detaljnije baviti u 6. poglavlju, iako e svi primjeri i prije toga koristiti klase jer
druge mogunosti i nemamo; svaki Java program mora kreirati barem jednu klasu. Osnovni
pojmovi o klasama navedeni u ovom poglavlju biti e sasvim dovoljni za razumijevanje materije do
poglavlja 6.

You might also like