106
OTVORENO RA^UNARSTVO JAVA MARIO @AGAR

OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

  • Upload
    ngothu

  • View
    222

  • Download
    2

Embed Size (px)

Citation preview

Page 1: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

OTVORENO RA^UNARSTVO

JAVA

MARIO @AGAR

Page 2: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo

Otvoreno računarstvoJavao Svijet Javeo Osnove jezika Java

o Paketi, Core Java Classes, Iznimke, Sučeljao Prilozi

o Svojstva, Kolekcije, JNI, JAR, Višenitnost, Grafika, Mario Žagar

Page 3: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Svijet Jave

Page 4: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java4

Predgovor - kojim putem dalje?

Page 5: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java5

Svijet Jave - ZAŠTO?o Dinamičan razvoj (računarstvo se razvija “prebrzo”)o Manjak znalacao OTVORENO RAČUNARSTVO

o prenosivo sklopovlje o prenosiva programska podrška (programi, alati)o prenosivi ljudi, znalci

Page 6: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java6

Svijet Jave - ŠTO? - filozofija (I)o Stvoriti prenosivi kôdo Izvođenje na svim platformama od najmanje do

najveće o JVM (Java Virtual Machine)o Java Platform - ME (Micro Edition), SE (Standard

Edition), EE (Enterprise Edition)o Objediniti prošlost, sadašnjost i budućnost

o C, C++, Javao Omogućiti nadogradnju, modularnost

o JavaBeans, …

Page 7: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java7

Svijet Jave - ŠTO? - filozofija (II)o Totalno umrežavanje

o paralelizam, udaljeni kôd, objektio Objektni pristup

o varijable i postupci zajednoo Lokalni i globalni programi

o aplikacije i appletio Svi frontovi

o programska podrška (Java, JavaOS, real-time Java)o sklopovlje (picoJava)o integracija u postojeća rješenja (JVM)

Page 8: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java8

Svijet Jave - KAKO? - metodologijao Koristi se općeniti kôd

o bytecodeo Nadogradnja na jezik Co Objektni pristup

o jednostruko nasljeđivanjeo Mrežni pristup

o pomoć WWW-ao Svaki preglednik JVM (Java Virtual Machine)o Arhitektura (trorazinska) picoJave

Page 9: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java9

Svijet Jave - ČIME? - tehnologijao Nova generacija čipova - picoJava?o Prilagodba postojećih procesorao JVMo Pametne kartice, mobilni aparatio Skaliranje API-jao Jezik Java, JavaBeans, aplikacije, appleti, servleti,

midleti, agleti,...o Java JINI - koncept - svaki uređaj ima dvije žice

Page 10: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java10

Neki uređivač teksta (vi,...)

javac

java

JVM + okolina

Svijet jave - JVM (I)

Bytecode(*.class)

Java(*.java)

Strojni kod

Prevoditelj za javu(javac) JVM

Prevođenje Izvođenje

Page 11: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java11

Svijet Jave - JVM (II) Datoteke*.class

Izvodbena okolina (runtime)

Dobavljeni kôd

Tumač bytecodea

pozivisustava

syst. call .dllJVM

Page 12: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java12

Izvođenje kod korisnika - Appleti, Midleti

Izvorni kôd u Javi

Prevoditelj za Javu

bytecode loader

Provjera bytecodea

Tumač bytecodea

Javin bytecode

Mreža

Izvodbena okolina

Prevoditelj «just-in-time»

Sklopovlje

Page 13: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Osnove jezika Java

Page 14: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java14

Operatorio Slični operatorima jezika Co Bolje definiran redoslijed evaluacijao Evaluacija s lijeva na desnoo Asocijativnost ( 6*4%3 )o >> aritmetički posmak (predznak se širi)

o u jeziku C nekad 1111... ili 000..o >>> shift right and zero fill

o nepotreban u jeziku C

Page 15: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java15

Osnovni tipovi podataka (I)o boolean

o 1 bit (false, true)o char

o 16-bitovni, Unicode (UTF-16, UTF-8), modified UTF-8o byte

o 8-bitovni, dvojni komplement (-128, +127)o short

o 16-bitovni, dvojni komplement (-32768, 32767)o int

o 32-bitovni, dvojni komplement (-2147483648, 2147483647)o long

o 64-bitovni, dvojni komplement (-9223372036854775808, 9223372036854775807)

264= Bubbabyte

Page 16: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java16

Osnovni tipovi podataka (II) o float

o 32-bitovni, IEEE-754 (single precision)o -3.4E38, +3.4E38, 6 -7 točnih znamenaka (ovisi o broju)

o double o 64-bitovni , IEEE-754 (double precision)

o -1.7E308, +1.7E308, 14 -15 točnih znamenaka

(kažu da je broj protona u vidljivom dijelu svemira - oko 1078)

o int i ;o literali \b, \t, \n, \r, \\, ...\uxxxx (\u2bf3)o za objekte treba više:

o Voće jabuka;o pokazivači implicitni u Javi

o Voće jabuka = new Voće();

Page 17: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java17

Java, što je što (I)o razred

o se sastoji iz polja (fields, members)o polja

o su podaci i metode (data members, methods)o ugrađeni tipovi podataka

o char, int, boolean, ..... o složeni tipovi podataka

o razred - Auto, Voće, GeometrijskiLik,....

Page 18: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java18

Java, što je što (II)o objekt

o instanca razreda o referentna varijabla

o pokazivač na objekt (mojGolf)o metoda konstruktor

o new stvara objekt i poziva konstruktor koji inicijalizira objekt (Auto mojGolf = new Auto();)

o poziv metode o mojGolf.potrošnja();

o nema destruktora o automatski - garbage collection

Page 19: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java19

Komponente jezika Java (I)o Elementi jezikao Razredi, stvaranje objekatao Jednostruko nasljeđivanje razreda

o stablo nasljeđivanja aplikacije definirano hijerarhijom nasljeđivanja klasa, korijen je klasa java.lang.Object

o Pod-razredio public class MojOkvir extends java.awt.Frame { ... }

o Višestruko nasljeđivanje moguće kod sučeljao Razredi implementiraju sučeljao Čvrsta provjera “Strongly checked type”

o statički i dinamički o Zaštita pristupa za razrede, podatke i metode

Page 20: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java20

Komponente jezika Java (II)o Kontrolne strukture ANSI C-a

o polja(arrays) i nizovi(strings) su objektio Nema pristupa memorijskim adresama

o niti C/C++ pointer aritmetike o Memoriju oslobađa sakupljač smeća

o garbage collector o Podrška iznimkama

o exceptionso Podrška nitima i kontroli paralelnog izvođenja

unutar objekta

Page 21: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java21

Modifikatori razredaModifikator class ime.......o abstract

o mora biti proširena prije uporabeo final

o ne može se proširivatio public

o razred vidljiv drugim paketima

o abstract public class Voće {...o final public class Limun extends Voće {...

Page 22: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java22

Modifikatori varijabli - vidljivost o public

o varijabla vidljiva svima (razred mora biti također public) o prazno

o varijabla vidljiva unutar paketao protected

o kao prazno ali varijabla vidljiva u pod-razredima u drugim paketima proširenim iz ovog razreda

o privateo varijabla vidljiva samo u ovom razredu

Page 23: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java23

Modifikatori varijabli - način korištenjao static

o jedna varijabla za razred (ne za svaki objekt)

o final o ne mijenja vrijednost (konstanta)

o transient o za budućnost

o volatileo više izvora može mijenjati vrijednost, prilikom

izvođenja potrebno osvježiti sadržaj prije čitanja

o protected static final int br_karata = 32;

Page 24: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java24

Modifikatori metoda - vidljivost o public

o metoda vidljiva od svakud

o “prazno” o isto kao i za varijable

o protected o isto kao i za varijable

o private o vidljiva unutar razreda, ne može biti i abstract

Page 25: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java25

Modifikatori metoda - način korištenja o static

o implicitno “final”o final

o ne može biti “overriden”o abstract

o mora biti “overriden” da bude korisnao native

o nije pisana u Javi (nema tijelo već će ono biti napisano u nekom drugom jeziku)

o synchronized o samo jedna nit može izvoditi metodu u jedinici

vremena, ulaz u metodu zaštićen monitorom o protected abstract int potrošnja() { .. }

Page 26: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java26

Ključne riječi (keywords) IBuilt-in tipovi:o boolean, true, falseo charo byte, short, int, longo float, doubleo void

Page 27: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java27

Ključne riječi (II)u izrazimao null, new, this, super

u naredbama (selekcija)o if, elseo switch, case, break, default

u naredbama (iteracije)o for, continue,o do, while

Page 28: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java28

Ključne riječi (III)u naredbama (prijenos kontrole)o returno throw

u naredbama (niti i iznimke)o synchronizedo try, catch, finally

Page 29: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java29

Ključne riječi (IV)promjena deklaracije (vidljivosti, namjene,..)o statico abstract, finalo private, protected, publico transient, volatile

Page 30: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java30

Ključne riječi (V)namijenjene metodama i razredimao class, instanceof, throws, native

namijenjene blokovima većim od razredao extendso interface, implementso package, import

za budućnosto cast, const, future, generic, gotoo inner, operator, outer, rest, var

Page 31: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java31

Java - primjero Pozdrav svima!

% vi Pozdrav.java//Primjer 1class Pozdrav{ public static void main(String args[]){ System.out.println("Pozdrav svima!"); }}% javac Pozdrav.java% java PozdravPozdrav svima!

Page 32: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java32

Java - primjer*public class PentiumBug { public static void main(String args[]) { double x,y,z; x = 4195835.0; y = 3145727.0; z = x - (x / y) * y; System.out.println("Rezultat je " + z); }}

% java PentiumBugRezultat je 0.0 *1993. Intel inside - Pentium

1994-10-30 g. T. Nicely bio je nezadovoljan s dijeljenjem,ponekad, ponegdje to je 256.000000 :-)

Page 33: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java33

Jezik Java - okolinao Stabilne, moćne biblioteke, paketi (packages) o Grafička sučelja za sve platforme o Jednostavna izgradnja GUI klijenatao Slike i audio o Podrška za obradu slika (filtari)o Dinamički dohvat razredao Mrežno programiranjeo Događaji (events), iznimke (exceptions),....

Page 34: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java34

Java je - kao švicarski nožić:o Programski jeziko Simulacija sklopovlja, sklopovljeo Mrežno računarstvoo Aplikacije, appleti, midleti, JavaCard,... o JavaBeans, JNI, RMI, o Alati (JDK, Eclipse, NetBeans,....)

o Glavna osobina Javeo Svijet Jave (skup modula - dijelova koji se upotpunjuju)

o Dobri temelji za nadogradnju

o PRIJE SVEGA .... filozofija, metodologija!/primjeri/Uvod

Page 35: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Paketi

Page 36: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java36

Paketi (Packages)o Paket omogućuje organizaciju razreda i sučelja u

logičnu cjelinuo Paket = skup povezanih tipova, uređuje:

o prava pristupao prostor imena

o Pod tipovima se misli na:o razredeo sučeljao pobrojenja (enumeracija)o anotacije

Page 37: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java37

Paketi - prostor imenao Ako će se koristiti javno, ime razreda mora biti

jedinstvenoo Jednostavan način za osigurati jedinstvenost

o nazvati paket po vlastitoj domeni u obrnutom redoslijedu o npr. za razrede primjera s geometrijskim likovima

o hr.fer.rasip.or.primjeri.likovio puno ime razreda Citac glasilo bi

o hr.fer.rasip.or.primjeri.likovi.Citaco a nalazio bi se u kazalu

o hr/fer/rasip/or/primjeri/likovi

Page 38: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java38

Paketi - kontrola pristupao Razredi u paketu zaštićeni su od pristupa izvanao Dvije razine kontrole pristupa:

o za razred o public

o razred vidljiv iz svih drugih razreda, iz bilo kojeg paketao package-private (ne navodi se)

o razred vidljiv samo unutar svojeg paketao za member varijablu

o publico package-private (ne navodi se)

o slično kao i za razrede (varijabla vidljiva ili ne izvan vlastitog paketa)o private

o varijabla vidljiva samo unutar vlastitog razredao protected

o varijabla vidljiva i podrazredima iz drugih paketa

Page 39: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java39

Paketi - tablica vidljivosti

Objekt je: default public protected private

vidljiv razredima iz istog paketa da da da ne

vidljiv pod-razredima iz istog paketa da da da ne

vidljiv razredima iz drugih paketa ne da ne ne

vidljiv pod-razredima iz drugih paketa ne da ne ne

nasljeđuju ga pod-razredi istog paketa da da da ne

nasljeđuju ga pod-razredi drugih paketa ne da da ne

Page 40: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java40

Paketi - korištenjeo Svi razredi predstavljaju paket

o po definiciji sve u standardni paket (ako nema imena)o U WindowsXX

o varijabla CLASSPATH .;\mojeklase;c:java\classes;...o import

o umjesto unosa cijelog imena razredao ako puno ime, prevoditelj prije gotovo uobičajeno:

o import java.awt.*; za sve razrede ilio import java.lang.Math; za pojedini razred

class MojaMatematika extends java.lang.Math

/primjeri/Paketi

Page 41: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Core Java Classes (CJC)

Page 42: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java42

Core Java Classes (CJC) o Sastavni dio Javine okolineo Resursi sustava (razred System)

o iznimke, događaji,...o niti

o Postavljanje programskih atributao naredbeni redak za jednokratne promjene,o svojstva (properties) za trajne promjene

o Rad sa znakovima (specifičnost Jave): o poljima (Arrays), znakovnim nizovima (Strings), U/I

tokovima podataka (Input/Output Data Streams),...

Page 43: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java43

Polja u Javi (I)o Polja i znakovni nizovi su osnovni razredi u Javi

o za usporedbu, u C-u kontinuirana grupa podataka s pristupom preko imena polja i relativne adrese (prvi element Ime[0])

o U C-u nema provjere granicao moguć je pristup preko pokazivačao izvor grješaka !!!

o U Javi (ako izvan granica) poruka: java.lang.ArrayOutOfBoundsException

Page 44: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java44

Polja u Javi (II)o Stvaranje polja (deklaracija - tip i ime):

o int[] mojePolje; // polje cijelih brojeva

o Dodjela memorije:o mojePolje = new int[velicina];

o velicina je int dakle “samo” 232 elemenatao 2.147.483.647 //:-)

o int mojePolje = { 1, 2, 3,...};o Vrijedi:

o char[] mojePolje = new char[200]; io char mojePolje[] = new char[200];

o Pažnja:o int a[], b, c;o int[] a, b, c; // nije isto

Page 45: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java45

Polja u Javi (III)o Višedimenzionalna polja:

o float mojePolje[] [] = new float [10][20];o O polju dodatne informacije kao npr:

o mojePolje.length; // duljina poljao Nije postupak (metoda) dakle ne:

o mojePolje.length(); //KRIVO!!

Page 46: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java46

Znakovni nizovi u Javio Znakovni niz je objekt razreda Stringo Postoji i razred StringBuffero Dio paketa java.lango Za usporedbu u C-u je znakovni niz definiran kao

polje znakova koje završava s ‘\0’ (NULL)o Znakovi 16-bitovni zapis (Unicode)

o Konstruktor: String mojNiz = new String(“abc”);

Page 47: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java47

Znakovni nizovi u Javi - Stringo Duljina:

mojNiz.length(); // razlika od poljao Zbrajanje:

String mojNiz2 = mojNiz + “cde”; // abccde (preopterećivanje operatora “+”)

o Uspoređivanje znakovnih nizova: mojNiz.equals(mojNiz2); mojNiz.equalsIgnoreCase(mojNiz2);

o Nije dobro: mojNiz == mojNiz2; // KRIVO!!

(uspoređuju se referentne varijable - pokazivači)

Page 48: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java48

Znakovni nizovi u Javi - Stringo Pronalaženje znakovnih nizova:

mojNiz.indexOf(‘b’); // 2

mojNiz.indexOf(“bc”); // 2

mojNiz.lastIndexOf(‘c’); // 3o Sortiranje nizova:

mojNiz.compareTo(mojNiz2)

o Svaki objekt ima neke karakteristične postupkeo equals - usporedba jednakosti objekatao getClass() - finalni postupak, vraća razred objekta iz kojeg se pozivao toString - vraća reprezentaciju objekta u obliku znakovnog nizao ....

Page 49: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java49

Znakovni nizovi - StringBuffero Objekt razreda StringBuffer

o ima svoj kapacitet, sadržaj i veličinuo sličan razredu String ali dozvoljava umetanje i

promjenu znakova, dodavanje znakova na kraj niza...

o Konstruktori:o StringBuffer mojNiz = new StringBuffer(20);o StringBuffer mojNiz = new StringBuffer(“abc cde fgh”);

o mojNiz - abc cde fgho mojNiz.length() - 11o mojNiz.capacity() - 20 // za prvi slučajo ...

Page 50: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java50

Znakovni nizovi - StringBuffero ...o mojNiz.charAt(n); // n-ti znak u nizu

o mojNiz.charAt(n, ‘c’); // n-ti znak u ‘c’

o mojNiz.insert(n, “tekst”); // ubaci “tekst” nakon n-tog znaka

o mojNiz.append(“tekst”); // dodaj na kraj

o mojNiz.append(“a=“).append(5).append(“;”).toString() // a=5;

Page 51: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Iznimke

Page 52: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java52

Iznimke (Exceptions)o Što bi se dogodilo da je kao parametar appleta iz

prošlog predavanja predan niz znakova koji se ne može protumačiti kao broj?

public class AppletDemo extends Applet{ int brojKvadratica, delay;  public void init(){  setForeground (Color.green); brojKvadratica=Integer.parseInt

(getParameter("BrojKvadratica"));delay=Integer.parseInt (getParameter("Delay"));

 } ...}

Page 53: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java53

Iznimkeo Dogodila bi se grješka i applet bi se prestao izvoditio Iznimke u Javi omogućuju sistematsko upravljanje

grješkamao ispravan način pretvaranja parametra:

try{ brojKvadratica=Integer.parseInt(getParameter("BrojKvadratica"));}catch (NumberFormatException nfe){   brojKvadratica=100;}

o Metoda parseInt podiže instancu razreda NumberFormatException

o Izvođenje programa nastavlja se naredbama iz bloka catch

/primjeri/AppletDemo.java

Page 54: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java54

Iznimkeo Što znači "podizati" iznimku?

public static int parseInt(String s, int radix)   throws NumberFormatException {   //...   // provjera da li je niz 's' broj ili ne, ako nije:    throw new NumberFormatException(s);   ...}

o Upravljanje iznimkama u Javi postiže se:o blokovima try-catcho ključnim riječima throw i throwso razredom Exception i razredima koji ga nasljeđuju

o Iznimka je "običan" objekt čiji razred nasljeđuje od razreda java.lang.Exception!

java.lang.Integer

Page 55: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java55

Vrste iznimakao Dvije kategorija iznimaka:

o opće (general)o izvršne (run-time)

o Opće iznimke moraju biti obrađeneo poziv metode koja podiže iznimku mora biti unutar

try-catch bloka, ilio metoda mora eksplicitno navesti da iznimku prosljeđuje

prethodnoj metodi (pozivatelju) korištenjem ključne riječi throws u retku deklaracije metode

o Izvršne (run-time) iznimke ne moraju se obrađivatio "hvatati" one za koje postoji realna šansa da se pojave

Page 56: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java56

Blok try-catch-finally

try{         //... kod koji podiže iznimke} catch ( NumberFormatException e){         //...} catch (IOException e) {         //...} catch (Exception e) {         //...} finally { // nije obavezan         //...uvijek se izvodi (nakon koda u odgovarajućem catch bloku), čak i ako nije bilo iznimke}

Page 57: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Sučelja

Page 58: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java58

Sučelja (interfaces)o Ugovor između razreda i vanjskog svijeta

o razred koji implementira sučelje obećaje ponuditi ponašanje objavljeno tim sučeljem

o Zanima nas određena funkcionalnost, a NE način na koji je ostvarena o npr. kod kupnje auto radija zanima nas ima li

standardni (ISO) konektor, a ne električna shema)o Sučelja ne dijele hijerarhiju razreda

o više razreda može istovremeno implementirati isto sučelje, jedan razred može implementirati više sučelja

o jedno sučelje može naslijediti više sučeljao korištenje slično apstraktnim razredima

Page 59: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java59

Sučeljao Sučelje se sastoji od

o konstanti i o predložaka (potpisa, praznih definicija metoda) koje

nemaju tijela (razred ih mora implementirati)o Razredi se nasljeđuju, sučelja implementiraju

class A extends B implements Co Svako sučelje u zasebnoj datotecio Namjena - podržavanje dinamičkog pronalaženja

metoda tijekom izvođenja programa

Page 60: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java60

Sučeljainterface suc1{

tip varijabla1 = vrijednosta;tip varijabla2 = vrijednostb;tip metoda1 (...);tip metoda2 (...);

}

o Metoda mora biti publico Ako razred ne implementira sve metode iz sučelja,mora

biti deklariran kao abstract

abstract class A implements B {...}

/primjeri/Sucelja_primjeri

interface I{ public void pisi(int a);

} class Test implements I { public void pisi(int a){

System.out.println(a); }

}

Page 61: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java61

public interface MouseListener extends EventListener {/**

    * Invoked when the mouse button has been clicked (pressed    * and released) on a component.    */

public void mouseClicked(MouseEvent e);/** ...public void mousePressed(MouseEvent e);public void mouseReleased(MouseEvent e);public void mouseEntered(MouseEvent e);public void mouseExited(MouseEvent e);

} public class Okvir implements MouseListener{    public void mouseClicked(MouseEvent e)    {            if (e.getButton()==MouseEvent.BUTTON1) {...}    }    //...}

java.awt.event.MouseListener

Sučelja

Page 62: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java62

Sučeljao Razred Okvir mora implementirati sve metode

sučelja MouseListener ili mora biti proglašen apstraktnim

o Razred u Javi:o nasljeđuje samo jedan razred

(implicitno java.lang.Object)o implementira nula ili više sučelja

o Sučelje se ne može instancirati, kao ni apstraktni razred

o Zato apstraktni razred može implementirati svoje (ne-apstraktne) metode, a sučelje ne.

Page 63: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java63

Sučeljao Jednom definirano sučelje ne mijenjati!o Zašto?

o svi razredi koji ga implementiraju više se ne bi prevodili ispravno (budući da više ispravno ne implementiraju to sučelje)o rješenje = promijeniti sve razrede – ne može se baš uvijek

o Ako je potrebna dodatna funkcionalnost, sučelje se proširuje novim sučeljem, npr:

public interface MojMouseListenerextends MouseListener{

public void mouseDoubleClicked(MouseEvent e);}

Page 64: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java

Pitanja?

Page 65: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Osobine sustava

Page 66: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java66

Osobine sustava (Properties)o Okolina - stroj, kazalo, boje, font itd. su atributi

sustava (runtime atributes)o Atributi vezani uz program (veličina prozora, opcije

kod pokretanja) (preferences)o Kontrola preko

o propertieso command line argumentso applet parameters

Page 67: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java67

Osobine sustava (II)o Kako iz Javine aplikacije saznati:

o na kojem operacijskom sustavu se izvodi, ilio koji VM je izvodi (1.1, 1.4 ili 1.5?), ilio korisničko kazalo?

o Prilikom izvođenja, JVM doznaje informacije o sustavu na kojem se izvodi

o Razred System čuva objekt tipa Properties (generički Javin razred za baratanje postavkama) popunjen osobinama sustava

Page 68: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java68

Osobine sustava (III)o Svojstva programa

o java.util.Propertieso Parovi ime/vrijednost (objekti razreda String)

o java.lang.System, java.langRuntimeo Postupci:

o static Properties getProperties(); Properties osobineSustava = System.getProperties();

o static String getProperty(String imeSvojstva); System.getProperty("file.separator");o static void setProperties(Properties prop);

/primjeri/Properties.java

Page 69: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java69

file.separator=\java.awt.graphicsenv=sun.awt.Win32GaphicsEnvironmentjava.home=C:\Program Files\Java\jre1.6.0_03java.io.tmpdir=c:\Temp\java.runtime.version=1.6.0_03-b05java.specification.name=Java Platform API Specificationjava.specification.vendor=Sun Microsystems Inc.java.specification.version=1.6...os.arch=x86os.name=Windows XPos.version=5.1path.separator=;sun.cpu.isalist=pentium_pro+mmx pentium_pro pentium+mmx pentium...sun.desktop=windowssun.management.compiler=HotSpot Client Compilersun.os.patch.level=Service Pack 2user.country=HRuser.dir=D:\EclipseWrkSp\Kukuuser.home=C:\Documents and Settings\korisnikuser.language=hruser.name=korisnik /Primjeri/PropList

Osobine sustava (varijable okoline)

Page 70: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java70

java.util.Dateo Nadnevak i vrijemeo postupci Date(), o Date(long datum) (ms od 1970-01-01)o int getDate(), int getHours(),..... void

setSeconds(int sekunde)o System.currentTimeMillis();o String toGMTString(),o String toLocaleString();

/primjeri/Nadnevak.java

Page 71: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java71

java.util.Randomo Slučajni brojevio Random() // sjeme je trenutni broj milisekundi o Random(long sjeme)o nextDouble(), nextFloat(), nextInt(), nextLong()

/primjeri/Slucajni.java

Page 72: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java72

java.lang.Runtimeo Razred Runtime - interakcija sa sustavomo exec, exit, freeMemory, totalMemoryo gc - garbage collectoro itd.

Page 73: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Kolekcije

Page 74: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java74

Skupovi objekata (Collections)o Kolekcija = objekt koji sadrži druge objekteo Kolekcija omogućuje:

o spremanje objekatao dohvat objekatao manipulaciju objektima

o Obično predstavlja podatke koji su grupirani i u stvarnom svijetuo npr. imenik je skup zapisa o kontaktima

Page 75: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java75

Javin okvir kolekcijao Okvir kolekcija (collections framework)

o jedinstvena arhitektura za predstavljanje i manipulaciju skupovima objekata

o Sastoji se od:o sučelja

o predstavljaju razne kolekcije, omogućuju manipulaciju skupom objekata neovisno o implementaciji

o implementacijao implementacije sučelja, ponovno iskoristive strukture

podatakao algoritama

o algoritmi za korisne operacije nad kolekcijamao npr. sortiranje i pretraga

Page 76: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java76

Prednosti okvira kolekcijao Olakšava kodiranje

o ne treba implementirati vlastite kolekcijeo Povećava kvalitetu i brzinu programa

o isprobane i optimirane standardne implementacijeo Omogućuje suradnju između nepovezanih

programskih sučeljao različita sučelja (API) komuniciraju razmjenjujući kolekcije

objekatao Olakšava učenje i primjenu novih programskih

sučeljao ako ta sučelja koriste standardne kolekcija (umjesto vlastitih),

lakše ih je shvatiti

Page 77: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java77

Osnovna sučelja

o Sortirani skup je poseban slučaj skupa, koji je poseban slučaj kolekcije

o Mapa je posebna vrsta kolekcije

Collection

Set List Queue

SortedSet SortedMap

Map

Page 78: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java78

Osnovna sučeljao Collection

o općeniti skup objekata, nema direktne implementacijeo Set

o kolekcija koja ne dozvoljava iste elementeo List

o uređena kolekcija – elementi se mogu indeksirati, može sadržavati iste elemente

o Queueo red, organiziran po FIFO principu

o Mapo skup parova ključ-vrijednost, o ne dozvoljava dva ista ključa: jedan ključ, jedna vrijednost

Page 79: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java79

Osnovna sučeljao SortedSet

o skup (Set) u kojem su elementi poredani u uzlaznom redoslijedu

o SortedMapo mapa (Map) u kojoj su ključevi poredani u uzlaznom

redoslijedu

Page 80: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java80

Generički tipovi (Generics)o U primjeru s geometrijskim likovima prolazili smo

kroz sve objekte u skupu (Vector)o Prije generičkih tipova:...Vector kontejner= new Vector();...kontejner.add(new Pravokutnik(linija));...for(int i = 0; i < kontejner.size(); i++){                      

povrsina=((Lik)kontejner.get(i)).izracunajPovrsinu();...

}...

/Primjeri/Likovi/Citac.java

U skup objekata dodajemo objekt tipa Lik (razred Pravokutnik

nasljeđuje razred Lik)

Skup objekata ne razlikuje tip – metoda Vector.get(i) vraća objekt

tipa java.lang.Object

java.lang.Object ne zna za metodu izracunajPovrsinu()

- potreban cast na Lik

Što ako ne znamo tip objekta pohranjenog u skupu ili pogrešno pridjelimo tip (cast)?

Page 81: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java81

Generički tipovio U slučaju pogrešne dodjele tipa (cast) u

prethodnom primjeru, prevoditelj ne bi prijavio greškuo rješenje = tipizirati svaki skup objekata

o Generički tipovi postoje od Jave 5 (1.5)

Page 82: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java82

Generički tipovio prethodni primjer s generičkim tipovima:

...Vector<Lik> kontejner= new Vector<Lik>();...kontejner.add(new Pravokutnik(linija));...for(int i = 0; i < kontejner.size(); i++){                      

povrsina=kontejner.get(i).izracunajPovrsinu();...

}...

/Primjeri/Likovi/Citac.java

Skup objekata koji može sadržavati samo objekte tipa Lik

Metoda Vector.get(i) je tipizirana i vraća objekt tipa Lik

Nema dodjele tipa ni mogućnosti grješke

Page 83: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java83

Sučelje Collectiono najvažnije metode:public interface Collection<E> extends Iterable<E> {    // Basic operations    int size();    boolean isEmpty();    boolean contains(Object element);    boolean add(E element);         //optional    boolean remove(Object element); //optional    Iterator<E> iterator();

...} java.util.Collection

deklaracija formalnog parametra tipa

Page 84: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java84

Obilaženje elemenatao Najčešće korištena funkcionalnost kolekcije –

obilazak svih elemenatao Dva načina:

o petlja for-eacho razred Iterator

Page 85: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java85

Petlja for-eacho poseban oblik for petljeo npr:class ForEach {     public static void main(String[] args){        int[] brojevi = {1,2,3,4,5};        for (int broj : brojevi) {                System.out.println(broj+"/5");        }    }} /Primjeri/ForEach.java

1/52/53/54/55/5

o ispis:

Page 86: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java86

Iteratoro Svaki skup objekata moguće je obilaziti pomoću

sučelja Iterator:public interface Collection<E> extends Iterable<E> {    Iterator<E> iterator();

...}

public interface Iterator<E> {    boolean hasNext();    E next();    void remove();}

java.util.Collection

java.util.Iterator

o Sučelje Iterator, osim pomicanja na sljedeći element (next()), omogućuje i provjeru da li element postoji (hasNext()) , i brisanje iz kolekcije (remove()):

Page 87: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java87

Vector<Lik> kontejner= new Vector<Lik>();...kontejner.add(new Pravokutnik(linija));...for(int i = 0; i < kontejner.size(); i++){                               povrsina=kontejner.get(i).izracunajPovrsinu();        ukupna+=povrsina;        System.out.print(kontejner.get(i));        System.out.print(" \tpovrsina=[" + (povrsina) + "]cm^2\n");}

for(Iterator<Lik> iterator=kontejner.iterator(); iterator.hasNext();){                               Lik trenutniLik=iterator.next();        povrsina=trenutniLik.izracunajPovrsinu();        ukupna+=povrsina;        System.out.print(trenutniLik);        System.out.print(" \tpovrsina=[" + (povrsina) + "]cm^2\n");}

/Primjeri/Likovi/Citac.java

Koristimo sučelje List za izdvajanje elemenata skupa

Ali kad bi koristili sučelje Iterator za obilaženje skupa ...

Page 88: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Java Native Interface (JNI)

Page 89: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java89

Veza Jave i okolineo Svijet Jave - prenosivost, otvorenost

o Kako ga povezati s okolinom (sklopovljem)?o Kako pročitati "stanje linije 3 na portu 8"?o Može li JVM biti u potpunosti napisan u jeziku Java?

o Vrijedi samo za aplikacije (ne applete - sigurnost)o Narušavanje prenosivosti

o R: Java Native Interface (JNI)

NativeIO.java:class NativeIO{ public native byte readIO(int adr); public native void writeIO(int adr, byte value); static{ System.loadLibrary("native"); }}

Page 90: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java90

Veza s C-om/C++-om/.... okolinomo Što ako:

o trebamo pristup sklopovlju ilio želimo koristiti postojeću biblioteku funkcija napisanu u

C/C++a i dalje želimo koristiti Javu?

o Java Native Interface (JNI) omogućuje povezivanje s vanjskim kôdom

Page 91: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java91

JNIo JNI omogućuje dvosmjerno povezivanje:

o pozivanje vanjskog koda iz Java programao vanjske metode označavaju se ključnom riječi native, npr. (iz

java.lang.System): public static native long currentTimeMillis();o alatom javah generira se header datoteka (.h) koja se koristi

za pisanje C/C++ koda o C kod, zajedno s generiranim headerom, kompajlira se u

dinamičku biblioteku (.DLL)o manipulaciju Java objektima iz vanjskog koda

o JNI definira funkcije u programskom jeziku C za manipulaciju nizovima znakova, poljima, poziv metoda, pristup varijablama objekta, etc ...

Page 92: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Java ARchive (JAR)

Page 93: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java93

JAR - Java ARchiveo Sažeta ZIP datoteka

o smanjuje količinu podataka za prijenoso Slična naredbi tar u UNIX-u

o tar -cvf ime, tar -xvf ime, tar -tvf imeo jar -cvf ime.jar ime1.class ime2.jpeg ....o jar -xvf ime.jar

o Unutar HTML-a (appleta) ARCHIVE=ime.jar

o Microsoft CAB (MSZIP) - cabinet datoteke

/primjeri/Properties.java

Page 94: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Višenitnost

Page 95: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java95

Višenitnost (Multithreading)o Nit, dretva, thread

o osnovni kontekst izvođenja programskog kôda (lightweight process)

o Sadrži:o vlastiti stog za lokalnu pohranu podatakao vlastitu memoriju (local heap)

o Višenitnost preko o razreda Thread ilio sučelja Runnablepublic class Thread extends Object implements Runnable

o Izvodi se metoda run u runnableObject

Page 96: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java96

Proceso Proces:

o program u izvođenju (heavyweight process)o ima:

o vlastiti memorijski prostoro resurse (npr. opisnike otvorenih datoteka)o jednu ili više niti

o Globalni memorijski prostor procesao dostupan svim nitima

o Svaki Javin proces ima barem jednu nito onu koja izvodi metodu main

Page 97: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java97

"Istovremeno izvođenje"o Privid istovremenog izvođenja više nitio Svaka nit ima prioritet (1-10, uobičajni=5)o Različiti operacijski sustavi različito dodjeljuju

procesor nitimao Mehanizmi:

o time slicingo preemption

Page 98: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java98

"Istovremeno izvođenje"o Time - slicing

o svaka nit dobije period vremena u kojem se može izvršavati, zatim sve ostale niti istog prioriteta dolaze na red (operacijski sustavi Windows)

o nit višeg prioriteta također može početi izvršavanje odmah

o Preemption o nit određenog prioriteta izvodi se dok ne završi, ili dok

nit s višim prioritetom ne postane spremna za izvođenje (Sun Solaris)

o nit višeg prioriteta "krade" procesor = preemptiono mana – ako još jedna nit istog prioriteta čeka na

procesor, neće se moći izvesti

Page 99: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java99

Razred Threado Razred java.lang.Thread

o Važniji konstruktori:o Thread()o Thread(String name)

o Sav posao niti unutar metode public void run() o Metoda run() se NIKAD ne poziva izravno

o umjesto toga, poziva se start()o JVM će pozvati run()

o Pokretanje niti (dvije tehnike ostvarenja višenitnosti):o naslijediti razred java.lang.Thread i

nadjačati njegovu metodu run()o implementirati sučelje Runnable i metodu run() specificiranu

sučeljem

Page 100: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java100

import java.lang.Runnable;class ProbnaDretva2 implements Runnable {

public void run() {    System.out.println("Dretva[2]: Implementirala Runnable!");   }}

import java.lang.Thread;

class ProbnaDretva1 extends Thread {  public void run() {    System.out.println("Dretva[1]: Naslijedila Thread!");  }}

Thread i Runnable

Page 101: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java101

o rezultat izvođenja:d:\src>java PokretacDretva[1]: Naslijedila Thread!Dretva[2]: Implementirala Runnable!

public class Pokretac {   public static void main(String[] args) {    ProbnaDretva1 dretva1 = new ProbnaDretva1();      dretva1.start();

    Thread dretva2 = new Thread(new ProbnaDretva2());    dretva2.start();  }}

/primjeri/Pokretac.java

o metoda run() je pozvana?

Page 102: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java102

Kritični odsječako Dio programskog kôda koji smije izvršavati samo

jedna dretvao u Javi svaki objekt može kontrolirati ulaženje u kritični

odsječak (mutex, lock)o Blok

o synchronized(objektZaSinkronizaciju) {...}o Od Jave 5.0 još više na temu višenitnosti

o u paketu java.util.concurrent postoje implementacije:o sinkronizacijskih mehanizama – semafora, barijera, brava

(lock)o kolekcija objekata sigurnih za istovremeni pristup (HashMap,

LinkedList)o bazen niti (thread pool), itd.....

Page 103: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Grafika

Page 104: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java104

Grafikao Java

o izvodi se na Windowsima, Solarisu, Linuxuo Grafički podsustavi različitih operacijskih sustava

potpuno različiti (ne samo izgledom već i arhitekturom)o npr. Unixi i Linux koriste model klijent/server X Window

sustavo Javine grafičke aplikacije isto rade i izgledaju na

svim platformama

Page 105: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java105

AWT, Swingo Abstract Window Toolkit (AWT)

o tanki sloj apstrakcije nad grafičkim komponentama OS-a na kojem se program izvodi

o koristi grafičke komponente OS-a na kojem se izvodio Swing

o od Jave 1.2o definira vlastite grafičke komponenteo u potpunosti pisan u Javi (iscrtava komponente putem

Java 2D API-a)o različiti izgledi (look&feel) aplikacijeo i dalje koristi dijelove AWT-a

/Primjeri/Swing/SwingLaF.java

Page 106: OTVORENO RA^UNARSTVO - ieee.hr · PDF fileOtvoreno računarstvo Otvoreno računarstvo Java o Svijet Jave o Osnove jezika Java o Paketi, Core Java Classes, Iznimke, Sučelja o Prilozi

Otvoreno računarstvo - Java106

SWTo Standard Widget Toolkit (SWT)

o razvio IBM, sad Eclipse Software Foundation o koristi ga Eclipse razvojno okruženjeo sličan AWT-u, također koristi grafičke komponente OS-a

na kojem se izvodio kompromis između lakoće korištenja (Swing) te brzine i

prirodnog izgleda nativnih grafičkih komponenata (AWT)