Programski jezik JAVA PREDAVANJE 1 2013
www.etf.ac.me
Nain polaganja ispita
1 kolokvijuma
kolokvijum se boduje 40 poena
5 domaih zadataka ili testova
svaki domai boduje sa 2 poenom
Zavrni ispit
radi se u raunarskoj sali boduje se sa 50 poena
Ukupno: 40+ 5*2 +50 = 100 poena
Ispit je poloen ako se sakupi 50 I vie poena.
Savladavanje gradiva
Teorijska nastava Praktina nastava u raunarskim salama Preduslovi: Poznavanje osnovnih principa i koncepata programiranja Savladano gradivo predmeta Programiranje 1 i 2 Samostalan, praktian i kontinuiran rad!
Literatura
Dejan ivkovi: Osnove JAVA programiranja, knjiga ili dostupno na Webu Bruce Eckel: Misliti na Javi, izdanje Mikro knjiga, ili original dostupno na Webu. Internet........
Radno okruenje
Java Development Kit (JDK 6) - http://java.sun.com/ JCreator-radno okruenje - http://www.jcreator.com/ NetBeans IDE 6.8 - http://netbeans.org/ Eclipse - http://www.eclipse.org/
Osnovne napomene o programskom jeziku JAVA
U jesen 1995. godine "Sun Microsystems" prvi put je predstavio programski jezik Java -- kao inovativan alat za Web. James Gosling i drugi projektanti u kompaniji "Sun" su bili angaovani na projektu razvoja interaktivne televizije i pametnih kunih ureaja Nezadovoljni to koriste C++, kreirali su novi programski jezik pogodan za njihov projekat. Ime Java programu je dato po nazivu jedne vrste kafe Java je u potpunosti objektno orjentisani programski jezik Danas se Java primjenjuje u velikom broju sluajeva, izmeu ostalog i za: Web servere. Relacione baze podataka. Personalne digitalne asistente. Mobilne telefone. Java podrava vienitnost, tako da se mogu praviti program i koji paralelno izvravaju vie aktivnosti. Vana karakteristika Jave je i sigurnost, jer ima ugraene mehanizme za zatitu od virusa i drugih zloupotreba.
Osnovne napomene o programskom jeziku JAVA
Vrste Java programa
Aplikacija
uobiajeni program koji rjeava neki problem potpuno samostalno
Aplet
izvrava se u Web pretraivau u okviru neke Web strane automatska distribucija i instalacija kako se appleti uitavaju sa Interneta, uvedena su neka ogranienja radi spreavanja zloupotrebe:
appleti ne mogu da itaju ili piu u fajl sistemu korisnika ne mogu da komuniciraju sa serverima, osim sa onim sa kog su uitani ne mogu da pokreu druge programe
Servlet, JSP (Java Server Pages)
izvrava se na Web serveru (dinamike strane)
6
Uvod u programski jezik Java
Java je objektno-orijentisani, nezavistan od platforme, bezbjedan programski jezik, koji je projektovan tako da ga je jednostavnije nauiti od C++-a, a tee zloupotrijebiti od C-a i C++-a. Objektno-orijentisano programiranje (OOP) je metodologija razvoja softvera u kojoj se program: sastoji od grupa objekata koji zajedno funkcioniu objekti se kreiraju korienjem klasa klase mogu biti korisniki definisane ili pripadaju nekom od postojeih paketa Java je projektovana tako da bude jednostavnija od programskog jezika C++, i to prije svega zbog sljedeeg: u okviru programskog jezika Java automatski se vri alokacija i dealokacija memorije. Java ne sadri pokazivae.
7
Uvod u programski jezik Java
Platformska nezavisnost je mogunost programa da se izvrava bez modifikacija u okviru razliitih radnih okruenja. Dakle, Java programski jezik ne zavisi od operativnog sistema i tipa raunara na kom se izvrava. Java programi se prevode u format koji se naziva bajtkod. Prevoenje se vri pomou Java Virtuelne Maine (JVM). Java Virtuelna Maina predstavlja izmiljen raunar koji omoguava da Java kod bude interpretiran na bilo kom tipu procesora. Bajtkod u okviru bilo kog operativnog sistema moe da izvri bilo koji softver ili ureaj koji sadri interpreter programskog jezika Java. Dakle, samo Java interpreteri zavise od procesora na kom se izvravaju.
8
Uvod u programski jezik Java
Prevoenje i interpretiranje programa pisanih u Javi
Uvod u programski jezik Java
Primjer jednostavnog koda napisanog u Javi:
class Zdravo { public static void main (String args[]) { System.out.println (Zdravo svima, ); System.out.println (ovo je Java program); } }
10
Uvod u programski jezik Java
Struktura Java programa
Java program se sastoji od jedne ili vie klasa Izvorni kod svake klase se pie u posebnom fajlu ije ime mora biti isto kao ime klase IME FAJLA MORA BITI ISTO KAO I IME OSNOVNE KLASE Ekstenzija fajla Java izvornog koda mora biti .java
11
Uvod u programski jezik Java
Za razvoj i izvravanje Java koda mogu se koristiti tekstualno i grafiko radno okruenje Tekstualno okruenje moe biti:
Notepad WordPad bilo koji drugi tekstualni editor (osim WORD-a i slinih tekst procesora).
Kao grafiko okruenje mogu se koristiti:
JCreator NetBeans IDE DrJava Eclipse Java Studio JBuilder, ...
12
Uvod u programski jezik Java
Prevoenje i izvravanje u tekstualnom okruenju (DOS prozor) Prevoenje
javac Zdravo.java - nakon prevoenja kreira se novi fajl sa ekstenzijom .class
Izvravanje
java Zdravo
13
Uvod u programski jezik Java
Grafiko radno okruenje u JCreator-u
14
Objektno orijentisano programiranje - OOP
Objektno-orijentisano programiranje je pristup razvoju raunarskih programa koji imitira nain na koji su objekti definisani u realnom svijetu. U programskom jeziku Java sve se realizuje korienjem klasa i objekata. Neophodno je prvo nauiti na koji nain Java implementira principe objektno-orijentisanog programiranja - to znai da moramo nauiti:
organizovanje programa pomou elemenata koji se nazivaju klase i postupak kojim se kreiraju objekti na osnovu klasa. definisanje klase: nain na koji treba da se ponaa i atribute koje treba da sadri. meusobno povezivanje klasa - nasljeivanje i povezivanje klasa korienjem paketa i interfejsa.
15
Osnovne karakteristike OOP - Objekti
U sluaju OOP-a, svaki program se kreira kombinujui novokreirane objekte i postojee objekte. Objekat je nezavistan element raunarskog programa, koji predstavlja grupu povezanih funkcionalnosti i koji je projektovan tako da izvrava specifian zadatak.
Promenljive (podaci)
Metodi (ponaanje)
Objekat
16
Osnovne karakteristike OOP - Objekti
Sve je objekat.
Objekti su promjenljive koje sadre podatke
Objekat ima svoju memoriju koja je opet sastavljena od objekata. Novi objekti se kreiraju iz postojeih. Svaki objekat ima tip, odnosno svaki objekat je instanca neke klase. Program je skup objekata koji komuniciraju jedni sa drugima.
17
Osnovne karakteristike OOP - Klase
Klasa se koristi za opis objekata sa zajednikim svojstvima, odnosno klasa definie ablon za stvaranje objekata za zajednikim svojstvima Klasa definie atribute i ponaanja koje posjeduju svi objekti napravljeni na osnovu klase U OOP se piu klase, a objekti se ne opisuju nego se stvaraju na osnovu klasa Instanca (primjerak) klase = objekat Stvaranje objekta = instanciranje odgovarajue klase Java programi se sastoje iskljuivo od klasa, pa se sve mora nalaziti unutar klasa
18
Osnovne karakteristike OOP - Klase
Primjer definicije klase
class Zgrada { int brojSpratova; String boja; String adresa; ... public void okrei() { ... }; public void dozidaj() { ... }; }
Objekti
19
Osnovne karakteristike OOP Nasljeivanje
Nain za formiranje novih klasa od postojeih Nasljeivanjem se uspostavlja hijerarhijska relacija izmeu srodnih klasa Nova klasa proiruje postojei klasu i nasleuje sve atribute i ponaanja postojee klase Terminologija
Bazna klasa klasa koja se proiruje Izvedena (proirena) klasa nova klasa
Bazna klasa = natklasa, klasa-roditelj Izvedena (proirena) klasa = potklasa, klasadijete Nasljeivanje se vri pomou kljune rijei extends
20
Osnovne karakteristike OOP Nasljeivanje
Izvedena klasa
class StambenaZgrada extends Zgrada { boolean lift; public void popraviLift(){}; }
21
Osnovne karakteristike OOP - Paketi
Klase su organizovane po paketima, analogno odnosu fajla i foldera u okviru fajl-sistema Paket je kolekcija klasa koje ine srodnu cjelinu (namijenjenih jednoj vrsti posla), odnosno paketi ine biblioteke klasa Osnovni paketi:
java.lang java.util java.io java.net java.awt java.applet
Paketi olakavaju nalaenje i korienje klasa Paketi spreavaju konflikte imena klasa, jer razliiti paketi mogu da sadre klase sa istim imenom Paketi omoguavaju kontrolu pristupa klasama
22
Osnovne karakteristike OOP - Paketi
Java platforma sadri veliki broj klasa koje su grupisane u pakete
23
Osnovne karakteristike OOP - Paketi
Pri pisanju neke klase, mogu se jednostavno koristiti samo klase iz istog paketa Klase iz drugog paketa se mogu koristiti uz navoenje punog imena:
java.util.Date v = new java.util.Date();
Deklaracija import uvozi pojedine klase iz nekog paketa Navodi se prije poetka teksta klase
import java.util.Date; class MojaKlasa { ... Date v = new Date(); ... }
24
Osnovne karakteristike OOP - Paketi
Deklaracija import uvozi sve klase iz nekog paketa pomou doker-znaka * Navodi se prije poetka teksta klase
import java.util.*; class MojaKlasa { ... Date v = new Date(); ... }
Paket java.lang se automatski uvozi u sve programe Svaka klasa mora da pripada nekom paketu Ako se nita ne navede, klasa pripada podrazumevanom (anonimnom) paketu
25
Osnovni elementi Java jezika
Imena (identifikatori) Tipovi podataka Promenljive Izrazi
26
Osnovni elementi Java jezika - Imena
Imena za razne elemente Java programa
Ime mora da poinje slovom ili _
Ostali znaci: slova, cifre ili _ Razlikuju se mala i velika slova Duina nije ograniena Ne mogu se koristiti rezervisane (slubene, kljune) rijei
27
Osnovni elementi Java jezika - Imena
Konvencije za imenovanje
Paketi: sva slova su mala
mojpaket
Klase: poetna slova svake rijei su velika slova
MojaKlasa
Metod/promjenljiva: poetno slovo je malo, a naredne rijei poinju sa velikim slovima
mojMetod, mojaPromjenljiva
Konstante: sva slova su velika
MOJA_KONSTANTA
28
Osnovni elementi Java jezika Tipovi Podataka
Primitivni tipovi podataka i reference. Cjelobrojni tipovi podataka
Brojevi sa pokretnim zarezom
Znakovi
Logiki
29
Osnovni elementi Java jezika Tipovi Podataka
Primitivni tipovi podataka: byte, short, int, long, float, double Klase (paket java.lang) koje enkapsuliraju primitivne tipove podataka:
Boolean, Byte, Character, Double, Float, Integer, Long i Number.
public class Test { public static void main(String[] args) { String stringIme = "125"; int najInteger = Integer.MAX_VALUE; int brojI = 34; float minFloat = Float.MIN_VALUE; double brojF = 35.67; float c = Float.parseFloat(stringIme);
Najveci integer = 2147483647 Najmanji float = 1.4E-45 Primitivni tip int = 34 Primitivni tip double 35.67 Metod parse.Float() 125.0
System.out.println("Najveci integer = " + najInteger); System.out.println("Najmanji float = " + minInteger); System.out.println("Primitivni tip int = " + brojI); System.out.println("Primitivni tip double " + brojF); System.out.println("Metod parse.Float() " + c); } }
30
Osnovni elementi Java jezika Tipovi Podataka
Tip char zauzima dva bajta umjesto uobiajenog jednog bajta
predstavlja Unicode znakove (Unicode standard definie kodni raspored koji obuhvata praktino sve dananje jezike, ukljuujui indoevropske, dalekoistone itd.)
Tip void oznaava prazan tip Korisniki definisani tipovi podataka su predstavljeni klasama Vrijednosti klasnih tipova su reference (adrese) objekata odgovarajue klase
31
Osnovni elementi Java jezika
Promjenljive
Za formiranje imena promjenljivih vai isto pravilo kao u C-u. Promjenljiva moe biti deklarisana unutar klase i tada se naziva promjenljiva lanica (klase). Promjenljiva deklarisana unutar neke metode je lokalna promjenljiva. Lokalne promjenljive imaju oblast vaenja bloka. Globalne promjenljive u JAVI NE POSTOJE: Nema razlike izmeu definicije i deklaracije promjenljive.
Svaka promjenljiva se mora definisati (deklarisati ) Deklaracija promjenljive:
tip + ime + (eventualno) poetna vrijednost
Format:
tip ime = vrijednost;
Tip promjenljive je primitivni ili klasni tip.
32
Osnovni elementi Java jezika Konstante
Sintaksa konstanti je ista kao u C-u. Na primjer:
int double float char char flag xCoo xx slovo znak = = = = 0x23ff; // cijeli broj zadat heksadecimalno 2.3E-11;// floating point konstante su tipa double 11.2F; // konstanta tipa float ima F na kraju 'c'; predstavljen Unicodovim kodom
= '\u05D0'; // znak
U Javi se promjenljiva moe uiniti konstantnom pomou kljune rijei final (const u C-u). Na primjer: final x = 3; znai da promjenljivu x vie ne moemo mijenjati.
33
Osnovni elementi Java jezika Operatori
Aritmetiki operatori binarni:
Aritmetiki operatori unarni:
34
Osnovni elementi Java jezika Operatori
Relacioni operatori
Logiki operatori
35
Osnovni elementi Java jezika Operatori
Operatori pridruivanja
36
Osnovni elementi Java jezika Operatori
Operator new alocira memoriju za objekat ili polje.
int [] x = new int[3]
Operator ?: (slino kao if-else naredba): x ? y : z Primjer: (2 > 0)? 5 : 7 Odgovor: 5 Operator . Se upotrebljava kod pristupa promjenljivim i metodama u klasi. Instanceof operator odredjuje da li je dati objekat instanca klase. Na primjer: x instanceof y
37
Konverzija tipova podataka
Konverzija podataka (casting) nastaje prilikom dodeljivanja vrijednosti jednog tipa promjenljivoj drugog tipa Automatska konverzija ukoliko: tipovi su meusobno kompatibilni ne moe doi do gubitka tanosti Implicitne konverzije u kojima se GUBI informacija (long u int ili double u float) nijesu dozvoljene.
38
Konverzija tipova podataka
Eksplicitna konverzija se mora koristiti ako postoji mogunost gubitka tanosti U tim sluajevima se koristi cast operator. Format:
(tip) izraz
Primjer:
double x = 10.1; int y = (int) x*x;
39
Prioritet operatora
Unarni operatori: Mnoenje i dijeljenje: Sabiranje i oduzimanje: Relacijski operatori: Jednakost i nejednakost: Ligiko I: Logiko ILI: Operator izbora: Operatori dodjele ++, --, eksplicitna konvercija *, /, % +, <, >, <=, >= ==, != && || ?: =, +=, -=, *=, /=, %=
40
Prvi jednostavan Java program
class Zdravo { public static void main (String[] args) { System.out.println (Zdravo svima, ); System.out.println (ovo je Java program ); } }
41
Prvi jednostavan Java program
Metoda main mora biti deklarisana kao public, poto pri pokretanju programa mora biti pozvana izvan klase. Rezervisana rije static dozvoljava da metoda main() bude pozvana bez pravljenja posebne instance klase. To je neophodno, jer Javin interpretator poziva metodu main() prije nego to je stvoren ijedan objekat.
Svaka klasa moe da sadri vie metoda, ali samo jedna je glavna (engl. main). Sa metodom main, poinje izvravanje svih Java aplikacija.
class Zdravo { public static void main (String[] args) { System.out.println (Zdravo svima, ); System.out.println (ovo je Java program ); } Rezervisana rije void samo Metodama mogu da se proslijede podaci preko promenljivih } saoptava prevodiocu da
metoda main() ne vraa nikakvu vrednost.
(tzv. Parametri) koje su navedene u zagradi iza imena metode. U metodi main() postoji samo jedan parametar, ali on nije jednostavan. String[] args deklarie parametar args, koji predstavlja niz instanci klase String. Vodite rauna da razlikuje velika i avaju mala znakovne slova, tako Main nije Java Objekti tipa String ozna nizove. Zna i, isto kadato i main! se program pokrene u niz args bie smjeteni eventualni argumenti unijeti na komandnu liniju.
42
Koraci kod pravljenja prvog Java programa
Nakon unosa koda, sljedei korak je da se sauva i da ime datoteci. Datoteka sa izvornim kodom u Javi se zvanino zove kompilatorska jedinica koja predstavlja tekstualnu datoteku koja sadri jednu ili vie definicija klasa. S obzirom da Java sav kod smjeta unutar klasa, ime odreene klase treba da odgovara imenu datoteke koja sadri program. Znai Java stavlja sve klase u poseban tekst fajl koji predstavlja Javin izvrni fajl. Dakle, prethodni primjer treba snimiti pod nazivom Zdravo.java. Sledei korak je kompajliranje programa. Prevodilac jezika Java zahtijeva da datoteka sa izvornim kodom ima nastavak .java. Naziv Javinog prevodioca je javac. Ukoliko se koristi MSDos Prompt, na komandnoj liniji treba otkucati: C:\>javac Zdravo.java
43
Koraci kod pravljenja prvog Java programa
Prevodilac javac e napraviti datoteku Zdravo.class. Datoteka Zdravo.class e sadrati bajtkod programa. (bajtkod predstavlja poluproizvod sa instrukcijama koje treba da izvri interpretator). Prevodilac javac ne generie kod koji se odmah moe izvravati. Da bi se pokrenuo program mora se pozvati Javin interpretator nazvan java na sljedei nain: C:\>java Zdravo Javina virtuelna maina izvrava program tako to prvo trai istoimenu klasu, a potom unutar nje metodu main(). Kada se program izvri, na ekranu e se dobiti sljedea poruka: Zdravo svima, ovo je program u Javi ...
44
Osnovne klase u Javi
Veliki broj klasa sa unaprijed definisanim metodima (procedurama) koji obavljaju specifini zadatak
System Math String Scanner (java.lang) (java.lang) (java.lang) (java.util)
45
Osnovne klase u Javi - System
System.out.print(. . .) System.out.println(. . .) System.out.printf(. . .)
System.out.print(Suma brojeva je: + s); System.out.println(Suma brojeva je: + s); System.out.printf(Suma brojeva je: %8d, s);
System.in omoguava unos sa tastature
46
Osnovne klase u Javi - Math
Math.sqrt(x) Math.abs(x) Math.sin(x), Math.cos(x), ... Math.exp(x) Math.log(x) Math.pow(x, y) Math.random()
47
Osnovne klase u Javi - String
String imePrezime = Marko Markovi; String s1, s2; s1=imePrezime;
s1.length() s1.toUpperCase(), s1.toLowerCase() s1.equals(s2) s1.equalsIgnoreCase(s2) s1.charAt (n) s1.substring(n,m)
48
Osnovne klase u Javi - Scanner
String tastatura = new Scanner(System.in);
tastatura.next() tastatura.nextInt() tastatura.nextDouble() tastatura.nextLine() tastatura.hasNextInt() tastatura.hasNextDouble() tastatura.hasNextLine()
49
Naredbe
Naredbe su elementi programa koji se izvravaju. Naredbe u Javi se piu sa ; na kraju. Vrste naredbi:
Naredba definisanja (deklarisanja) promjenljivih Naredba dodjele vrijednosti promjenljivim Blok naredba Naredbe grananja Naredbe ponavljanja (petlje, ciklusi)
50
Naredba definisanja (deklarisanja) promenljivih
Svaka promenljiva se mora definisati (deklarisati ) prije nego to se upotrijebi Format: tip ime = vrijednost; Primjeri:
int i=7; float j=3.14;
Definicija promenljive u Javi ne mora se pisati na poetku programa
51
Naredbe dodjele
Format:
promenljiva = izraz;
Ekvivalentno sa:
promenljiva = promenljiva izraz;
Primjeri:
x += 2; a /= b + c; m %= n; x = x + 2; a = a / (b + c); m = m % n;
52
Blok naredbe
Niz naredbi izmeu { i }:
{ naredba1; naredba2; . . . naredban; }
naredba1 naredba2
. . .
naredban
Blok naredba se moe pisati na svakom mjestu u programu gdje se moe koristiti obina naredba
53
Blok naredbe
Oblast vaenja promjenljive definisane u bloku je od mjesta deklaracije do kraja bloka Lokalne promjenljive ne mogu se koristiti u okolnim blokovima Naredbe u bloku mogu koristiti promjenljive iz okolnih blokova Primjer:
{ int x, y; { int i=5; x = (i++) - 3; y = i + 4; } i = 0; // GREKA! }
54
Naredbe kontrole toka programa naredbe grananja
if naredba if-else naredba sloena if-else naredba switch naredba
true
Naredba if-else
false
uslov
Format:
naredba2 naredba1
if (uslov) naredba1; else naredba2;
55
Naredbe kontrole toka programa naredbe grananja
Sloena if-else naredba - primjer
if (p >= 90) ocjena = A; else if (p >= 80) ocjena = B; else if (p >= 70) ocjena = C; else if (p >= 60) ocjena = D; else if (p >= 50) ocjena = E; else ocjena = F;
56
Naredbe kontrole toka programa naredbe grananja
Naredba switch switch (izraz) { case vrijednost1 : naredba1; case vrijednost2 : naredba2; ... case vrijednostn : naredban; default : naredba; }
Primjer:
switch (broja) { case 1: System.out.println(Jedan); break; break case 2: System.out.println(Dva); break; break case 3: System.out.println(Tri); break; break default efault: efault System.out.println(Ni jedan, ni dva, ni tri); }
break; break
57
Naredbe kontrole toka programa naredbe ponavljanja
while petlja do-while petlja for petlja
uslov
true
while petlja - format:
while (uslov) { naredbe; }
false
naredba
58
Naredbe kontrole toka programa naredbe ponavljanja do-while petlja - format:
do naredba; while (uslov);
naredba
uslov
false
true
59
for petlja - format:
Naredbe kontrole toka programa naredbe ponavljanja
naredba1
uslov
false ) for (naredba1; uslov; naredba2 naredba;
true
naredba naredba2
naredba1 inicijalizacija petlje naredba2 zavrnica tela petlje
60
Naredbe kontrole toka programa naredbe prekida
Naredbe break i continue break prevremeno prekida izvravanje petlje (while, dowhile, for), kao i naredbe switch continue prekida izvravanje samo aktuelne iteracije petlje U ugnjeenim petljama se odnose samo na petlju u kojoj se nalaze Primjer: for (int i = 1; i <= 10; i++) { if (i == 5) break; System.out.print(i + ); } System.out.println(); /* 1 2 3 4 */
61
Naredbe kontrole toka programa naredbe prekida
Primjer 2:
for (int i = 1; i <= 10; i++) { if (i%2 != 0) continue; System.out.print(i + ); } System.out.println(); /* 2 4 6 8 10 */
Primjer 3:
int k = 0; for (int i = 1; i <= 5; i++) for (int j = i; j <= 5; j++) { if (i == 3) break; k++; } System.out.println(k = + k); /* k = 9 */
62
Naredbe kontrole toka programa naredbe prekida
Oznaene petlje
63