JAVA JAVA JAVA JAVA Objektno orijentirano programiranje

55 downloads 4307 Views 278KB Size Report
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