prog ii pred - geof.unizg.hrnvucetic/prog_ii_pred.pdf · – kompajlirani java kôd može se...
TRANSCRIPT
1
1 2
JAVA
Kreirali inženjeri tvrtke Sun Microsystems
Prva verzija 1995. godine
3
JAVA
Osnovne značajke jezika:
objektno orijetiranneovisan o hardveru i softveru– 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
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 timbibliotekama koje programeru daju visoku produktivnost.
omogućuje jednostavno korištenje višenitnostioperacijskog sustavasiguran od vanjskih uplitanja
4
JAVA
Primjena jezika:
jezik opće namjenenajznačajnija primjena – programiranje zainternet– neovisnost o platformi omogućuje kreiranje izvršnog
kôda na jednom računalu, a samo izvršavanje na drugom računalu
5
JAVA
Vrste programa u programskom jeziku Java:
aplikacijaaplikacija– program koji se izvršava na vašem računalu,
pod njegovim operacijskim sustavom
apletaplet– program namijenjen distribuciji preko Interneta i
izvršavanju u web preglednicima (web browsers), npr. Internet Exploreru, Mozilla Firefoxu
6
Objektno orijentirano programiranje
2
7
Objektno orijentirano programiranje
= postupak izrade programa upotrebomskupa objekata koji međusobno razmjenjuju poruke
8
Objekti
Objekti u stvarnom svijetu (bicikl, automobil, mobitel, računalo, pas, stablo, ...)
svaki objekt ima dvije karakteristike:– stanje (state)
(bicikl: trenutna brzina, trenutni brojokretaja pedala, broj brzine)
– ponašanje (behavior)(bicikl: ubrzavanje, usporavanje, kočenje,promjena brzine, skretanje)
9
Objekti
Objekti u softverskom okruženju= softverski entiteti sastavljeni od varijabli
(promjenljivih, atributa) i pripadnihmetoda
modeli stvarnih (bicikl, računalo, ...) ili apstraktnih objekata (događaj, greška, ...)varijable (variables) – stanje objektametode (methods) – ponašanje objekta(funkcije karakteristične za taj objekt)
10
Objekti
Objekti u softverskom okruženju– 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
11
Enkapsulacija varijabli objekta (Encapsulation)
Metode okružuju i skrivaju nukleus unutar objekta tako da se ne vidi i ne može direktno pristupiti izvana, tj. iz ostalih objekata
Pakiranje varijabli objekta unutar “zaštitnog sloja” metoda naziva se enkapsulacija
12
Enkapsulacija varijabli objekta
Prednosti enkapsulacije za razvoj softvera:
– Modularnost (modularity)Objekt se može pisati i održavati neovisno o izvornom kodu za druge objekte
– Skrivanje informacija (information hiding)Objekti posjeduju javno sučelje za komunikaciju s drugim objektima. Međutim, objekt može sadržavativarijable 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 semijenjati u svakom trenutku bez utjecanja na drugeobjekte ovisne o njemu
3
13
Poruke (messages)
= mehanizam komunikacije (interakcije)objekata
– objekt A šalje poruku objektu B ako želi da objekt B izvrši jednu od svojih metoda
14
Poruke
Sastavne komponente poruke:objekt kojemu je poruka adresirana (vaš bicikl)naziv metode koju treba izvesti (changeGears)parametri proslijeđeni metodi (lower gear)
15
Poruke
Prosljeđivanjem poruka mogu se obaviti skoro sve vrste interakcija između objekata
ponašanje objekata definirano je njihovim metodama
Objekti ne moraju biti unutar istog procesa niti na istom računalu da bi slali porukejedni drugima
16
Klase (class)
= predložak (skica) ili prototip koji definiravarijable i metode zajedničke za objekte određenog tipavaš bicikl je instanca od klase objekatabicikl
Bicikli imaju stanja (trenutna brzina, trenutni broj okretaja, dva kotača) i ponašanja (promjena brzine, kočenje) koja su zajedničkaMeđutim, svaki objekt bicikl ima jedinstveni skup stanja
17
Klasa i instance klase
Klasa
2 instance
varijable instance
18
Varijable klase i metode klase(class variables & class methods)
Varijabla klase sadržava informaciju koja sedijeli između svih instanci klase Metoda klase je metoda koju je mogućepozvati bez postojanja objekta, poziv iz klase
4
19
Nasljeđivanje (inheritance)
= mehanizam pomoću kojega je na temelju postojećih klasa moguće definirati nove i proširene klase
Superklasa
Subklase
20
NasljeđivanjeSvaka subklasa nasljeđuje stanja (deklarirane varijable) od superklase
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 superklaseMountains 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 metodeTandem 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
Npr. Ako posjedujete mountain bike s dodatnim skupom brzina možete premostiti “change gears” metodu tako da može upravljati dodatnim stanjima
21
Nasljeđivanje
Subklase osiguravaju specijalizirane funkcije na osnovi zajedničkih elemenata koji su realizirani u superklasi. Nasljeđivanjem se može ponovnokoristiti kôd iz superklase.
22
Sučelja (interface)
= skupovi definicija metoda i konstanti (bez implementacije!)
svako sučelje je protokol (“ugovor”) komunikacije objekata koji nisu u strogodefiniranom odnosuimplementacijom svih metoda iz nekog sučelja klasa implementira to sučelje
23
Kreiranje, prevođenje i izvršavanje programa
24
Kreiranje, prevođenje i izvršavanje programa
Programeri pišu programe uglavnom u višem programskom jeziku, a računalaizvršavaju instrukcije strojnog jezika
Što računalo radi s programom napisanim u višem programskom jeziku?
5
25
Kreiranje, prevođenje i izvršavanje programa
“Tradicionalni” jezici:Najč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 jezikspecifičan za dani operacijski sustav i hardver. OS šalje te strojne instrukcije na izvršavanje u CPU.
Za izvršavanje na drugom računalu, potrebno ga je ponovno kompajlirati uporabom drugačijeg kompajlera, u odgovarajući strojni jezik
26
Kreiranje, prevođenje i izvršavanje programa
“Tradicionalni” jezici:Umjesto uporabe kompajlera, koji odjednom prevodi čitav program, moguće je koristiti interpreter, prevoditelj (interpreter) koji prevodi instrukciju po instrukciju za vrijeme njihova izvršavanja
Izvršavanje kompajliranih programa zapravo je brže od izvršavanja interpretiranih programa
27
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
Programi u Javi prevode se u strojni jezik(kompajliraju), ali u strojni jezik računala koje zapravone postoji, a naziva se Java Virtual Machine (JVM)
Strojni jezik za JVM naziva se Java bytecode
Kompajlirani program ima ekstenziju class, npr. Prog.class
28
Kreiranje, prevođenje i izvršavanje Java programa
JVM ne postoji stvarno – potrebna njegova simulacija. Simuliranje se obavlja pomoću interpretera (java.exe)koji čita bytecode i osigurava da instrukcije u njemubude izvršene
Java interpreter potreban za svaku vrstu platforme
Java bytecode može biti izvršen na bilo kojem računaluna kojemu je instaliran Java interpreter
29
Kreiranje, prevođenje i izvršavanje Java programa
30
JavaJava programprogram::
Java code
Java Bytecode
SPARC Power PC Pentium
JavaCompiler
compilin g
interpretin
g
““TradiTradicionalni”cionalni” programprogram::
code
Pentiumcompiler
Powercompiler
SPARCcompiler
Pentium Power PC SPARC
compilin g
Usporedba prevođenja i izvršavanja Java programa i “tradicionalnih” programa
6
31
“Hello world !”
32
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 !");
}}
33
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 argv[]){System.out.println(“Hello World!”);
}}
HelloWorldApp.class
0xCAFEBABE...javac
javac HelloWorldApp.javajava HelloWorldApp
HelloWorldApp.java
34
Hello world aplikacija
Svi Java programi sastoje se od jedne ili više definicija klasaHelloWorldApp je primarna ili kontrolna klasa (primary or controlling class)Samostalne aplikacije zahtijevaju metodu main u kontrolnoj klasiAplet ne zahtijeva main metodu
35
Definiranje klase
Podebljana linija počinje blok definicije klase u Javi
/**
* 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 !");
}
}
36
/**
* 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 !");
}}
Kontrolna klasa
definicija klase
(kontrolna klasa)
main metoda
7
37
Main metoda
Mora biti static -> metoda klase (class method)Metode klase možemo pozivati bez instanciranja objekta klaseKada pokrenemo Java aplikaciju Java interpreter pronalazi i poziva main metodu u klasi čiji je naziv dan u liniji naredbe
38
Komentari
Tri vrste komentara:/* text */
Prevoditelj ignorira sve od /* do */.
/** documentation */Ovo označava komentar za dokumentaciju. Prevodilac ignorira tu vrstu komentara. JDK javadoc alat koristi te komentare za automatsko kreiranje dokumentacije.
// textPrevodilac ignorira sve od // do kraja tekuće linije
39
Oznake metode
Oznake metode je skup informacija o metodi:
naziv metodetipvidljivostargumentitip return podatka
40
Oznake metode
public static void main(String[] args)
type(static, non-static)visibility(public,private,...)
return type
method’s namearguments
41
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 PrintStreamkoja je referirana (pokazana) preko varijable out koja je
varijabla klase System klase.