Kompajlirani Java kôd može se izvršavati na svakoj platformi. (hardver +
operacijski sustav) ... omogućuju, između ostalog, jednostavno mrežno
programiranje.
JAVA ¾Kreirali inženjeri tvrtke Sun Microsystems ¾Prva verzija 1995. godine
1
2
JAVA
JAVA
¾ Osnovne značajke jezika:
¾Primjena jezika:
f objektno orijetiran f neovisan o hardveru i softveru
f jezik opće namjene f najznačajnija primjena – programiranje za internet
– Kompajlirani Java kôd može se izvršavati na svakoj platformi (hardver + operacijski sustav) na kojoj je instalirana Java, npr. kôd kompajliran pod Windowsima može se izvršavati pod Linuxom i obratno
– neovisnost o platformi omogućuje kreiranje izvršnog kôda na jednom računalu, a samo izvršavanje na drugom računalu
f uz jezik dolaze opsežne biblioteke (libraries) (*.java) – omogućuju, između ostalog, jednostavno mrežno programiranje te programiranje grafičkog sučelja. Snaga jezika je upravo u tim bibliotekama koje programeru daju visoku produktivnost.
f omogućuje jednostavno korištenje višenitnosti operacijskog sustava f siguran od vanjskih uplitanja 3
4
JAVA ¾Vrste programa u programskom jeziku Java: f aplikacija – program koji se izvršava na vašem računalu, pod njegovim operacijskim sustavom
f aplet
Objektno orijentirano programiranje
– program namijenjen distribuciji preko Interneta i izvršavanju u web preglednicima (web browsers), npr. Internet Exploreru, Mozilla Firefoxu
5
6
1
Objektno orijentirano programiranje
Objekti ¾Objekti u stvarnom svijetu (bicikl, automobil, mobitel, računalo, pas, stablo, ...) f svaki objekt ima dvije karakteristike: – stanje (state)
= postupak izrade programa upotrebom skupa objekata koji međusobno razmjenjuju poruke
(bicikl: trenutna brzina, trenutni broj okretaja pedala, broj brzine) – ponašanje (behavior) (bicikl: ubrzavanje, usporavanje, kočenje, promjena brzine, skretanje)
7
8
Objekti
Objekti ¾Objekti u softverskom okruženju
¾Objekti u softverskom okruženju = softverski entiteti sastavljeni od varijabli (promjenljivih, atributa) i pripadnih metoda
–
mogu se zamisliti kao stanice, s jezgrom (nukleusom) od varijabli i vanjskim slojem od metoda koji formira sučelje (interface) između varijabli objekta i okoline
f modeli stvarnih (bicikl, računalo, ...) ili
apstraktnih objekata (događaj, greška, ...)
f varijable (variables) – stanje objekta f metode (methods) – ponašanje objekta
(funkcije karakteristične za taj objekt)
9
10
Enkapsulacija varijabli objekta
Enkapsulacija varijabli objekta
(Encapsulation)
¾ Prednosti enkapsulacije za razvoj softvera:
¾ Metode okružuju i skrivaju nukleus unutar objekta tako da se ne vidi i ne može direktno pristupiti izvana, tj. iz ostalih objekata
–
Modularnost (modularity)
f Objekt se može pisati i održavati neovisno
o izvornom kodu za druge objekte
¾ Pakiranje varijabli objekta unutar “zaštitnog sloja” metoda naziva se enkapsulacija
– Skrivanje informacija (information hiding) f Objekti posjeduju javno sučelje za komunikaciju s drugim objektima. Međutim, objekt može sadržavati varijable i metode koje služe za njegov interni rad i nisu dostupne korisniku objekta. Stoga, ako javno sučelje nije mijenjano, varijable i metode mogu se mijenjati u svakom trenutku bez utjecanja na druge objekte ovisne o njemu 11
12
2
Poruke (messages)
Poruke ¾ Sastavne komponente poruke:
= mehanizam komunikacije (interakcije) objekata –
f
objekt A šalje poruku objektu B ako želi da objekt B izvrši jednu od svojih metoda
f f
objekt kojemu je poruka adresirana (vaš bicikl) naziv metode koju treba izvesti (changeGears) parametri proslijeđeni metodi (lower gear)
13
14
Poruke
Klase (class) = predložak (skica) ili prototip koji definira varijable i metode zajedničke za objekte određenog tipa ¾ vaš bicikl je instanca od klase objekata bicikl
¾ Prosljeđivanjem poruka mogu se obaviti skoro sve vrste interakcija između objekata f
¾
ponašanje objekata definirano je njihovim metodama
Objekti ne moraju biti unutar istog procesa niti na istom računalu da bi slali poruke jedni drugima
f Bicikli
imaju stanja (trenutna brzina, trenutni broj okretaja, dva kotača) i ponašanja (promjena brzine, kočenje) koja su zajednička f Međutim, svaki objekt bicikl ima jedinstveni skup stanja 15
Varijable klase i metode klase
Klasa i instance klase
(class variables & class methods)
¾ Varijabla klase sadržava informaciju koja se dijeli između svih instanci klase ¾ Metoda klase je metoda koju je moguće pozvati bez postojanja objekta, poziv iz klase
varijable instance
Klasa
16
2 instance
17
18
3
Nasljeđivanje
Nasljeđivanje (inheritance)
¾ Svaka subklasa nasljeđuje stanja (deklarirane varijable) od superklase
= mehanizam pomoću kojega je na temelju postojećih klasa moguće definirati nove i proširene klase
f Mountains bikes, trkaći bicikli i tandemi imaju svi sljedeća stanja: broj okretaja pedala, brzinu kretanja i sl.
¾ Svaka klasa nasljeđuje metode od superklase f Mountains bikes, trkaći bicikli i tandemi imaju jednako ponašanje: kočenje, promjena broja okretaja pedala i dr.
¾ Subklase mogu imati uz nasljeđene i nove varijable i metode
Superklasa
f Tandem bicikli imaju 2 sjedala i 2 volana; mountain bikes imaju dodatni skup brzina
¾ Subklase mogu i premostiti naslijeđene metode (override inherited methods) i realizirati specifične implementacije
Subklase
f Npr. Ako posjedujete mountain bike s dodatnim skupom brzina možete premostiti “change gears” metodu tako da može upravljati dodatnim stanjima 19
20
Nasljeđivanje
Sučelja (interface) = skupovi definicija metoda i konstanti (bez implementacije!)
¾ Subklase osiguravaju specijalizirane funkcije na osnovi zajedničkih elemenata koji su realizirani u superklasi. Nasljeđivanjem se može ponovno koristiti kôd iz superklase.
¾
svako sučelje je protokol (“ugovor”) komunikacije objekata koji nisu u strogo definiranom odnosu
¾
implementacijom svih metoda iz nekog sučelja klasa implementira to sučelje
21
22
Kreiranje, prevođenje i izvršavanje programa ¾ Programeri pišu programe uglavnom u višem programskom jeziku, a računala izvršavaju instrukcije strojnog jezika
Kreiranje, prevođenje i izvršavanje programa
Što računalo radi s programom napisanim u višem programskom jeziku? 23
24
4
Kreiranje, prevođenje i izvršavanje programa
Kreiranje, prevođenje i izvršavanje programa
¾ “Tradicionalni” jezici:
¾ “Tradicionalni” jezici:
fNajčešće se prevode pomoću kompajlera, prevoditelja (compiler) (npr. C, C++, Fortran) = zasebni program koji prevodi (kompajlira) program iz višeg programskog jezika direktno u strojni jezik specifičan za dani operacijski sustav i hardver. OS šalje te strojne instrukcije na izvršavanje u CPU.
fUmjesto uporabe kompajlera, koji odjednom prevodi čitav program, moguće je koristiti interpreter, prevoditelj (interpreter) koji prevodi instrukciju po instrukciju za vrijeme njihova izvršavanja fIzvršavanje kompajliranih programa zapravo je brže od izvršavanja interpretiranih programa
fZa izvršavanje na drugom računalu, potrebno ga je ponovno kompajlirati uporabom drugačijeg kompajlera, u odgovarajući strojni jezik 25
Kreiranje, prevođenje i izvršavanje Java programa
26
Kreiranje, prevođenje i izvršavanje Java programa
¾ Programi se u Javi kreiraju u nekom editoru (npr. Notepad, ConTEX) i spremaju s ekstenzijom java, npr. Prog.java
¾ JVM ne postoji stvarno – potrebna njegova simulacija. Simuliranje se obavlja pomoću interpretera (java.exe) koji čita bytecode i osigurava da instrukcije u njemu bude izvršene
¾ Programi u Javi prevode se u strojni jezik (kompajliraju), ali u strojni jezik računala koje zapravo ne postoji, a naziva se Java Virtual Machine (JVM)
¾ Java interpreter potreban za svaku vrstu platforme
¾ Java bytecode može biti izvršen na bilo kojem računalu na kojemu je instaliran Java interpreter
¾ Strojni jezik za JVM naziva se Java bytecode ¾ Kompajlirani program ima ekstenziju class, npr. Prog.class 27
28
Usporedba prevođenja i izvršavanja Java programa i “tradicionalnih” programa
Kreiranje, prevođenje i izvršavanje Java programa
Java program: program:
“Tradicionalni” Tradicionalni” program: program:
Java code compiling
Java Compiler
compiling
interpreting
29
code
Java Bytecode
SPARC
Power PC
Pentium
Pentium compiler
Power compiler
SPARC compiler
Pentium
Power PC
SPARC
30
5
Hello world aplikacija! /** * The HelloWorldApp class implements an application that * displays "Hello World!" to the standard output. */ public class HelloWorldApp { public static void main(String[] args) { // Display "Hello World !" System.out.println("Hello World !"); } }
“Hello world !”
31
Hello world aplikacija! HelloWorldApp.java /** * The HelloWorldApp class implements an application that * displays "Hello World!" to the standard output. */ public class HelloWorldApp{ public static void main(String argv[]){ System.out.println (“Hello World!”); } }
javac HelloWorldApp.java
Hello world aplikacija
HelloWorldApp.class
javac
32
¾Svi Java programi sastoje se od jedne ili više definicija klasa ¾HelloWorldApp je primarna ili kontrolna klasa (primary or controlling class) ¾Samostalne aplikacije zahtijevaju metodu main u kontrolnoj klasi ¾Aplet ne zahtijeva main metodu
0xCAFEBABE ...
java HelloWorldApp
33
34
Definiranje klase
Kontrolna klasa
¾Podebljana linija počinje blok definicije klase u Javi
/** * The HelloWorldApp class implements an application that * displays "Hello World!" to the standard output. */ definicija public class HelloWorldApp { klase public static void main(String[] args) { (kontrolna // Display "Hello World !" klasa) System.out.println("Hello World !"); } }
/** * The HelloWorldApp class implements an application that * displays "Hello World!" to the standard output. */ public class HelloWorldApp { public static void main(String[] args) { // Display "Hello World !" System.out.println("Hello World !"); } }
main metoda
35
36
6
Main metoda
Komentari ¾Tri vrste komentara:
¾Mora biti static -> metoda klase (class method) ¾Metode klase možemo pozivati bez instanciranja objekta klase ¾Kada pokrenemo Java aplikaciju Java interpreter pronalazi i poziva main metodu u klasi čiji je naziv dan u liniji naredbe
¾/* text */ fPrevoditelj ignorira sve od /* do */.
¾/** documentation */ fOvo označava komentar za dokumentaciju. Prevodilac ignorira tu vrstu komentara. JDK javadoc alat koristi te komentare za automatsko kreiranje dokumentacije.
¾// text fPrevodilac ignorira sve od // do kraja tekuće linije 37
Oznake metode
38
Oznake metode visibility(public,private,...)
type(static, non-static)
¾Oznake metode je skup informacija o metodi: f f f f f
public static void main(String[] args)
naziv metode tip vidljivost argumenti tip return podatka
return type
method’s name
39
arguments
40
System i PrintStream klase public class HelloWorldApp { public static void main(String[] args) { // Display "Hello World !" System.out.println("Hello World !"); } }
Ova naredba poziva println() metodu klase PrintStream koja je referirana (pokazana) preko varijable out koja je varijabla klase System klase.
41
7