prog II pred - geof.unizg.hrnvucetic/prog_II_pred.pdf · – Kompajlirani Java kôd može se...

7
1 2 JAVA Kreirali inženjeri tvrtke Sun Microsystems Prva verzija 1995. godine 3 JAVA Osnovne značajke jezika: objektno orijetiran neovisan 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 tim bibliotekama koje programeru daju visoku produktivnost. omogućuje jednostavno korištenje višenitnosti operacijskog sustava siguran od vanjskih uplitanja 4 JAVA Primjena jezika: jezik opće namjene najznačajnija primjena – programiranje za internet 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: aplikacija aplikacija program koji se izvršava na vašem računalu, pod njegovim operacijskim sustavom aplet aplet program namijenjen distribuciji preko Interneta i izvršavanju u web preglednicima (web browsers), npr. Internet Exploreru, Mozilla Firefoxu 6 Objektno orijentirano programiranje

Transcript of prog II pred - geof.unizg.hrnvucetic/prog_II_pred.pdf · – Kompajlirani Java kôd može se...

Page 1: prog II pred - geof.unizg.hrnvucetic/prog_II_pred.pdf · – Kompajlirani Java kôd može se izvršavati na svakoj platformi ... Objektno orijentirano programiranje = postupak izrade

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

Page 2: prog II pred - geof.unizg.hrnvucetic/prog_II_pred.pdf · – Kompajlirani Java kôd može se izvršavati na svakoj platformi ... Objektno orijentirano programiranje = postupak izrade

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

Page 3: prog II pred - geof.unizg.hrnvucetic/prog_II_pred.pdf · – Kompajlirani Java kôd može se izvršavati na svakoj platformi ... Objektno orijentirano programiranje = postupak izrade

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

Page 4: prog II pred - geof.unizg.hrnvucetic/prog_II_pred.pdf · – Kompajlirani Java kôd može se izvršavati na svakoj platformi ... Objektno orijentirano programiranje = postupak izrade

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?

Page 5: prog II pred - geof.unizg.hrnvucetic/prog_II_pred.pdf · – Kompajlirani Java kôd može se izvršavati na svakoj platformi ... Objektno orijentirano programiranje = postupak izrade

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

Page 6: prog II pred - geof.unizg.hrnvucetic/prog_II_pred.pdf · – Kompajlirani Java kôd može se izvršavati na svakoj platformi ... Objektno orijentirano programiranje = postupak izrade

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

Page 7: prog II pred - geof.unizg.hrnvucetic/prog_II_pred.pdf · – Kompajlirani Java kôd može se izvršavati na svakoj platformi ... Objektno orijentirano programiranje = postupak izrade

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.