Professional Documents
Culture Documents
Java 2012
Java 2012
Java
Sadraj
Uvod Osnovni elementi Kompozicija i nasleivanje Rukovanje izuzecima Ulazno-izlazni podsistem Gotove klase
Java
2 / 59
Uvod
Java
programski jezik razvijen 1995. godine James Gosling Sun Microsystems
sada Oracle
Sintaksa
slina C/C++ jednostavniji objektni model
Java
3 / 59
Uvod
Java virtual machine (JVM)
interpretira Java bytecode
zamena za mainski kod svi programi se kompajliraju u bytecode
implementirane za skoro sve operativne sisteme mogu da se implementiraju direktno na hardveru omoguavaju nezavisnost od platforme
Java
4 / 59
Uvod
Osobine Jave
1. jednostavna, objektno orijentisana i lako prihvatljiva sintaksa 2. robustna i sigurna 3. nezavisna od platforme i portabilna 4. visoke performanse izvravanja programa 5. da se interpretira, poseduje niti i da je dinamika
Java
5 / 59
Uvod
Performanse
reputacija
sporo izvravanje neoptimizovano koritenje memorije
stvarnost
od verzije 1.1
ogromno poboljanje u performansama
Java
6 / 59
Uvod
Automatsko rukovanje memorijom
garbage collector (GC)
programer definie vreme kreiranja objekta GC sam unitava objekte
kada vie nisu potrebni
Java
7 / 59
Uvod
Java edicije
Java Card
aplikacije za smart kartice
Java
8 / 59
Sadraj
Uvod Osnovni elementi Kompozicija i nasleivanje Rukovanje izuzecima Ulazno-izlazni podsistem Gotove klase
Java
9 / 59
Osnovni elementi
Paket
sadri grupu klasa, objedinjenu u istom prostoru imena svaka klasa pripada paketu
neimenovani, podrazumevani paket
(default package)
U prvom redu klase, koji nije komentar, se definie paket kome pripada
rezervisana re package package imePaketa;
Java
10 / 59
Osnovni elementi
Paket
ime paketa zajedno sa nazivom klase, daje njeno puno ime
ukoliko se klasa TestNiz nalazi u paketu test, njeno puno ime e biti test.TestNiz
rezervisana re import
import test.TestNiz; import test.*;
Java
11 / 59
Osnovni elementi
Paket
ime paketa implicitno odreuje strukturu direktorijuma
potovati pravila davanja imena kao i kod direktorijuma paketi obino poinju malim slovom
Java
12 / 59
Osnovni elementi
Komentari
//
jednolinijski komentar
/* */
blok komentar
/** */
Javadoc komentar mehanizam za automatsko generisanje dokumentacije
Java
13 / 59
Osnovni elementi
Klasa
rezervisana re class poinje velikim poetnim slovom fajl u kome je smetena klasa
mora imati isto ime kao i klasa
case sensitive
ekstenzija .java
Java
14 / 59
Osnovni elementi
Klasa
jedna klasa = jedan fajl
samo jedna public klasa moe postojati u jednom fajlu jedan fajl sadri kompletnu klasu
Java
15 / 59
Osnovni elementi
Klasa
ne postoje pokazivai
svi objekti se prenose po adresi (referenci) svi primitivni tipovi se prenose po vrednosti
Java
16 / 59
Osnovni elementi
Klasa
izvriva
ukoliko poseduje main metodu
public static void main(String[] args) { ... }
Java
17 / 59
Osnovni elementi
Niz
sekvenca objekata ili elemenata prostog tipa
svi elementi su istog tipa pod jednim imenom za identifikaciju
naziv niza
Java
18 / 59
Osnovni elementi
Niz
inicijalizacija niza
int[] a = {1, 2, 3, 4, 5};
samo na mestu definisanja niza
Java
19 / 59
Osnovni elementi
Niz
length broj elemenata u nizu
svaki niz poseduje ovaj lan moe se itati ali ne i menjati
Java
20 / 59
Osnovni elementi
Niz
java.util.Arrays.toString(niz)
ispis niza
Java
21 / 59
Sadraj
Uvod Osnovni elementi Kompozicija i nasleivanje Rukovanje izuzecima Ulazno-izlazni podsistem Gotove klase
Java
22 / 59
Kompozicija i nasleivanje
Motivacija
klasa bi trebalo da predstavlja korisnu jedinicu koda
idealan sluaj potrebno je iskustvo i pronicljivost kako bi se napravio viekratno upotrebljiva klasa
Java
23 / 59
Kompozicija i nasleivanje
Kompozicija
sastavljanje klasa od ve postojeih klasa
esto se poredi sa relacijom ima
auto ima motor
vrlo je fleksibilna
objekti lanovi su obino privatni
nevidljivi drugim programerima
Java
24 / 59
Kompozicija i nasleivanje
Kompozicija
primer kompozicije zadatak 3
Napisati klasu PP3Prizma koja modeluje pravu pravilnu trostranu prizmu. Prizmu modelovati kao kompoziciju baze (objekat klase JSTrougao) i omotaa (objekat klase Pravougaonik). Klasa treba da sadri metode koje raunaju povrinu i zapreminu prizme. Napisati test program koji testira funkcionalnost klase.
Java
25 / 59
Kompozicija i nasleivanje
Nasleivanje
nain kloniranja ve postojeih klasa
izmena ili dodavanje sadraja
Java
26 / 59
Kompozicija i nasleivanje
Nasleivanje
jednostruko nasleivanje
viestruko nasleivanje ne postoji u Javi
mehanizam implementacije interfejsa
redefinisanje metoda
sve metode su virtuelne, nema posebne rezervisane rei
tzv. late binding (dinamiko povezivanje koda)
opciono @Override
Java
27 / 59
Kompozicija i nasleivanje
Nasleivanje
polimorfizam
prilikom nasleivanja i obrazovanja hijerarhije svaki izvedeni tip se moe posmatrati kao osnovni (kao neki od direktnih potomaka)
obrnuto ne vai
Java
28 / 59
Kompozicija i nasleivanje
Nasleivanje
klasa java.lang.Object predak svih klasa napisanih u Javi
implicitno nasleena tj svi objekti u javi imaju isti interfejs u osnovi, stoga su istog tipa odreena zajednika funkcionalnost tj znamo da moemo izvriti neke osnovne operacije
clone() equals(Object obj) toString() hashCode() finalize()
Java
29 / 59
Kompozicija i nasleivanje
Nasleivanje
apstraktna klasa
abstract rezervisana re ne moe da se instancira moe da ima apstraktne metode
ista rezervisana re kao i za apstraktnu klasu
Java
30 / 59
Kompozicija i nasleivanje
Nasleivanje
primer nasleivanja zadatak 4
Napisati apstraktnu klasu GeometrijskoTelo sa apstraktnim metodama za izraunavanje povrine, odnosno zapremine. Napisati klasu Kvadar koja nasleuje klasu GeometrijskoTelo i redefinie potrebne metode. Napisati klasu Kocka koja nasleuje klasu Kvadar.
Java
31 / 59
Kompozicija i nasleivanje
Nasleivanje
interfejsi
interface kljuna re unapreuju koncept apstrakcije implementiraju se od strane klasa
nasleuju se ako elimo da pravimo novi interfejs
Java
32 / 59
Kompozicija i nasleivanje
Nasleivanje
primer nasleivanja uz implementaciju interfejsa zadatak 5
Napisati interfejs GeometrijskoTelo sa apstraktnim metodama za izraunavanje povrine, odnosno zapremine. Napisati klasu Kvadar koja implementira GeometrijskoTelo i redefinie potrebne metode. Napisati klasu Kocka koja nasleuje klasu Kvadar.
Java
33 / 59
Sadraj
Uvod Osnovni elementi Kompozicija i nasleivanje Rukovanje izuzecima Ulazno-izlazni podsistem Gotove klase
Java
34 / 59
Rukovanje izuzecima
Rukovanje grekama za vreme rada
ne mogu se sve greke otkriti za vreme prevoenja poveava se robusnost sistema obrada izuzetaka je jedini zvanini nain na koji Java prijavljuje greke
sprovodi je prevodilac Jave umesto vraanja posebne vrednosti ili postavljanja indikatora
Java
35 / 59
Rukovanje izuzecima
Vanredno stanje
eng. exceptional condition spreava nastavak rada tekue metode ili programskog bloka iskakanje iz tekueg okruenja omoguava izuzetak (eng. exception)
pravi se novi objekat u dinamikoj memoriji sa operatorom new zaustavlja se aktuelna putanja izvravanja i obradu preuzima mehanizam obrade izuzetaka
Java
36 / 59
Rukovanje izuzecima
Izuzetak
generisanje (bacanje) izuzetaka
izuzeci se kreiraju kao i ostali objekti sa operatorom new koren hijerarhije klasa Throwable
nasleuje klasu Object nasleuju je klase Error i Exception nasleivanjem klase Exception (ili eventualno Throwable) moemo praviti nae izuzetke
Java
37 / 59
Rukovanje izuzecima
Obrada izuzetaka
ispitni blok
eng. try block rezervisana re try isprobava pozive metoda izuzetak ne izaziva iskakanje iz metode ili programa sve to se testira stavlja se u try block
Java
38 / 59
Rukovanje izuzecima
Obrada izuzetaka
blok za obradu izuzetaka
eng. exception handler rezervisana re catch mehanizam za obradu izuzetaka postoji za svaki tip izuzetaka koji se obrauje dolazi nakon try block-a trai se prvi blok iji argument odgovara tipu izuzetka specifiniji blok pre uoptenijeg
najuopteniji - Exception e
Java
39 / 59
Rukovanje izuzecima
Obrada izuzetaka
block finally
uvek se izvrava moemo odraditi neke akcije koje ne zavise od toga da li se izuzetak dogodio ili ne dolazi na kraju, iza svih blokova za obradu izuzetaka koristi se kada je potrebno da se neki element vrati u prvobitno stanje
zatvaranje otvorene datoteke, zatvaranje mrene konekcije ...
ne postoji u C++
oslanjamo se na destruktore
Java
40 / 59
Rukovanje izuzecima
Obrada izuzetaka
primer rukovanja izuzecima:
try { id = Integer.parseInt(br.readLine()); } catch(NumberFormatException nfe) { System.out.println("Identifikacioni broj mora biti celobrojna vrednost!"); //nfe.printStackTrace(); } catch (Exception e) { //do something e.printStackTrace(); } finally { //do something }
Java
41 / 59
Sadraj
Uvod Osnovni elementi Kompozicija i nasleivanje Rukovanje izuzecima Ulazno-izlazni podsistem Gotove klase
Java
42 / 59
Ulazno-izlazni podsistem
Serijalizacija objekata
pretvaranje objekta u niz bajtova iz kojeg se taj objekat u potpunosti moe rekonstruisati snimanje objekata u datoteku ili bazu podataka
sa mogunou njihove ponovne rekonstrukcije
Java
43 / 59
Ulazno-izlazni podsistem
Serijalizacija objekata
rezervisana re transient
nekada ne elimo da serijalizujemo odreeni podobjekat
zbog mogueg naruavanja bezbednosti primer: lozinke
Java
44 / 59
Ulazno-izlazni podsistem
Ulazno-Izlazni podsistem
java.io paket standardna biblioteka za ulazno-izlazne operacije
ulazni i izlazni tokovi podataka itai i pisai kao proirenje tokova
problemi sa internacionalizacijom i lokalizacijom
klasa RadnomAccessFile
osnovna manipulacija sa datotekom sluajan pristup
klasa File
manipulisanje datotekama i direktorijumima proitati javadoc
Java 45 / 59
Ulazno-izlazni podsistem
Ulazno-Izlazni podsistem
tokovi omoguuju prenos podataka
memorija, datoteke, cevi (pipes)... unificiran pristup bez obzira na lokaciju metode su bajt orijentisane koriste se u svim sluajevima osim kod itanja Unicode karaktera
pisai i itai
reader i writer klase problem kod bajt orijentisanih tokova su 16-bitni Unicode karakteri primer: klase FileReader, FileWriter, BufferedReader i PrintWriter koriste se u sluaju itanja Unicode karaktera
Java 46 / 59
Ulazno-izlazni podsistem
Ulazno-Izlazni podsistem
primeri tokova
klase ObjectOutputStream i ObjectInputStream metode writeObject() i readObject() poeljno koritenje metoda close() i flush()
uitavanje sa tastature
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Java
47 / 59
Ulazno-izlazni podsistem
Ulazno-Izlazni podsistem
zadatak 6
napisati interfejs Radi
metode: radi() i odmaraj()
napisati klasu Radnik koji nasleuje klasu Osoba i implementira interfejs Radi.
dodatna polja: plata, staz (int) i radiTrenutno (boolean)
Java
48 / 59
Ulazno-izlazni podsistem
Ulazno-Izlazni podsistem
zadatak 6
napisati klasu Robot
polja: naziv, proizvodjac (string), serijskiBroj i godiste (int) metode: get i set, konstruktor i toString
napisati klasu Radilica koja nasleuje klasu Robot i implementira interfejs Radi.
dodatna polja: datumPregleda uPogonu (boolean) (Date), radnik(Radnik) i
napisati klasu Test koja proverava klase tako to poziva njihove metode
klase se kreiraju pomou parametara uneenih sa tastature
Java
49 / 59
Sadraj
Uvod Osnovni elementi Kompozicija i nasleivanje Rukovanje izuzecima Ulazno-izlazni podsistem Gotove klase
Java
50 / 59
Gotove klase
Klasa String
nije samo niz karaktera, posebna klasa immutable
ne moe se promeniti nakon konstruisanja moe biti samo napravljen novi string
konkatenacija sa operatorom +
Java
51 / 59
Gotove klase
Klasa String
Korisne metode
str.length() str.charAt(i) str.indexOf(s) str.substring(a,b) str.substring(a) str.equals(s) str.equalsIgnoreCase(s) str.startsWith(s) str.split(regex)
Java
52 / 59
Gotove klase
Klasa ArrayList
kolekcija elemenata generinost od Jave 1.5 mogue postaviti tip elemenata klase
kolekcija elemenata definisanog tipa
za prolazak se moe koristiti sintaksa for petlje primer korienja klase ArrayList
Java
53 / 59
Gotove klase
Javadoc
generator dokumenata
HTML format iz samog source koda
Java
54 / 59
Gotove klase
Gotove klase
zadatak 7
napisati klasu Predmet, koja sadri polja broj (tipa int), ime (tipa String), tekst (tipa String). napisati klasu Evidencija koja modeluje evidenciju predmeta u sudu
polja: nazivSuda (tipa String), datum (tipa Date) i listu predmeta (izaberite neku dinamiku strukturu) metode: za ispis predmeta na osnovu broja za ispis predmeta na osnovu imena za dopisivanje novog teksta predmeta (u nastavku postojeeg teksta)
Java
55 / 59
Pitanja i komentari
Java
56 / 59
Sadraj
Uvod Osnovni elementi Kompozicija i nasleivanje Rukovanje izuzecima Ulazno-izlazni podsistem Gotove klase
Java
57 / 59
Objektno programiranje E2
Java