programski jezik java - acs.uns.ac.rs · pdf fileprogramski jezik java osnovni koncepti...
TRANSCRIPT
Programski jezik Java
Osnovni koncepti programskog jezika Java
Objektno programiranje E2
Java
2 / 59
Sadraj
Uvod Osnovni elementi Kompozicija i nasleivanje Rukovanje izuzecima Ulazno-izlazni podsistem Gotove klase
Java
Uvod
Java programski jezik razvijen 1995. godine James Gosling Sun Microsystems
sada Oracle
Sintaksa slina C/C++ jednostavniji objektni model
3 / 59Java
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
4 / 59Java
Uvod
Osobine Jave1. jednostavna, objektno orijentisana i lako prihvatljiva
sintaksa2. robustna i sigurna3. nezavisna od platforme i portabilna4. visoke performanse izvravanja programa5. da se interpretira, poseduje niti i da je dinamika
5 / 59Java
Uvod
Performanse reputacija
sporo izvravanje
neoptimizovano koritenje memorije
stvarnost od verzije 1.1
ogromno poboljanje u performansama
znatno manja razlika u odnosu na C/C++ pogotovo na dananjim raunarima
6 / 59Java
Uvod
Automatsko rukovanje memorijom garbage collector (GC)
programer definie vreme kreiranja objekta
GC sam unitava objekte kada vie nisu potrebni
spreava curenje memorije u tradicionalnom smislu
nepoznat trenutak pozivanja GC-a zagarantovano prilikom nedostatka memorije na heap-u
skida teret rukovanja memorijom sa lea programera
7 / 59Java
Uvod
Java edicije Java Card
aplikacije za smart kartice
Java Platform, Micro Edition (Java ME ) aplikacije za okruenja sa ogranienim resursima
Java Platform, Standard Edition (Java SE ) aplikacije za radne stanice
Java Platform, Enterprise Edition (Java EE ) aplikacije u velikim distribuiranim sistemima
Internet aplikacije
8 / 59Java
9 / 59
Sadraj
Uvod Osnovni elementi Kompozicija i nasleivanje Rukovanje izuzecima Ulazno-izlazni podsistem Gotove klase
Java
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;
10 / 59Java
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.*;
11 / 59Java
Osnovni elementi
Paket ime paketa implicitno odreuje strukturu direktorijuma
potovati pravila davanja imena kao i kod direktorijuma
paketi obino poinju malim slovom
paketi reprezentuju hijerarhiju svaki nivo hijerarhije se razdvaja takom
rs.ac.uns.ftn.oop.figure
viewer.elements controller.servlets
primer kreiranja paketa
12 / 59Java
Osnovni elementi
Komentari //
jednolinijski komentar
/* */
blok komentar
/** */
Javadoc komentar
mehanizam za automatsko generisanje dokumentacije
13 / 59Java
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
modifikator pristupa klasi public class ImeKlase { ... }
modifikator pristupa elementa klase pie se uz svako polje i metodu
14 / 59Java
Osnovni elementi
Klasa jedna klasa = jedan fajl
samo jedna public klasa moe postojati u jednom fajlu
jedan fajl sadri kompletnu klasu
sav kd se pie unutar klase sve je objekat
osim primitivnih tipova
byte, short, int, long, float, double, boolean, char primitivni tipovi poseduju wrappere
pretvaraju ih u objekte
15 / 59Java
Osnovni elementi
Klasa ne postoje pokazivai
svi objekti se prenose po adresi (referenci) svi primitivni tipovi se prenose po vrednosti
ne postoji preklapanje operatora ne postoji destruktor
GC obavlja posao
16 / 59Java
Osnovni elementi
Klasa izvriva
ukoliko poseduje main metodu public static void main(String[] args) { ... }
primer kreiranja klasezadatak 1
U programskom jeziku Java napisati klase Krug i JSTrougao (jednakostranicni trougao). Osim potrebnih polja, klase treba da imaju metode koje racunaju obim, odnosno povrinu. Napisati test program koji testira funkcionalnost ovih klasa.
17 / 59Java
Osnovni elementi
Niz sekvenca objekata ili elemenata prostog tipa
svi elementi su istog tipa pod jednim imenom za identifikaciju
naziv niza
operator indeksiranja [ ]
referenca na niz int[] a
int a[]
18 / 59Java
Osnovni elementi
Niz inicijalizacija niza
int[] a = {1, 2, 3, 4, 5};
samo na mestu definisanja niza
int[] a = new int[5];
bilo gde u kdu
potrebno je dodatno zadati vrednosti elementima niza
19 / 59Java
Osnovni elementi
Niz length broj elemenata u nizu
svaki niz poseduje ovaj lan
moe se itati ali ne i menjati
prvi element se nalazi na lokaciji 0 poslednji element je na lokaciji length 1
RuntimeException ukoliko prekoraimo veliinu niza
20 / 59Java
Osnovni elementi
Niz java.util.Arrays.toString(niz)
ispis niza
primer nizovazadatak 2
U programskom jeziku Java napisati klasu koja u okviru main metode kreira niz od 5 objekata klase Pravougaonik i pronalazi pravougaonik sa najveom povrinom
21 / 59Java
22 / 59
Sadraj
Uvod Osnovni elementi Kompozicija i nasleivanje Rukovanje izuzecima Ulazno-izlazni podsistem Gotove klase
Java
Kompozicija i nasle ivanje
Motivacija klasa bi trebalo da predstavlja korisnu jedinicu koda
idealan sluaj
potrebno je iskustvo i pronicljivost kako bi se napravio viekratno upotrebljiva klasa
ponovno korienje kda je jedna od najveih prednosti OOP
23 / 59Java
Kompozicija i nasle ivanje
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
promena unutranje strukture ne znai nunu promenu klijentske aplikacije
24 / 59Java
Kompozicija i nasle ivanje
Kompozicijaprimer kompozicijezadatak 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.
25 / 59Java
Kompozicija i nasle ivanje
Nasleivanje nain kloniranja ve postojeih klasa
izmena ili dodavanje sadraja
nasleivanjem mi stvaramo novu klasu rezervisana re extends
sadri sve lanove postojee klase i privatne lanove iako su oni skriveni i nedostupni
kopira interfejs postojee klase sve poruke koje moemo poslati objektima postojee klase
moemo poslati i objektima izvedene
26 / 59Java
Kompozicija i nasle ivanje
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
27 / 59Java
Kompozicija i nasle ivanje
Nasleivanje polimorfizam
prilikom nasleivanja i obrazovanja hijerarhije
svaki izvedeni tip se moe posmatrati kao osnovni (kao neki od direktnih potomaka)
obrnuto ne vai
zabrana nasleivanja klase rezervisana re final
28 / 59Java
Kompozicija i nasle ivanje
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()
olakava rad GC-a jer uvek se zna kog je tipa klasa
29 / 59Java
Kompozicija i nasle ivanje
Nasleivanje apstraktna klasa
abstract rezervisana re
ne moe da se instancira moe da ima apstraktne metode
ista rezervisana re kao i za apstraktnu klasu
obino se prave za potrebe definisanja hijerarhije
apstraktne metode mogu biti definisane iskljuivo u apstraktnoj klasi
30 / 59Java
Kompozicija i nasle ivanje
Nasleivanjeprimer nasleivanjazadatak 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.
31 / 59Java
Kompozicija i nasle ivanje
Nasleivanje interfejsi
interface kljuna re
unapreuju koncept apstrakcije implementiraju se od strane klasa
nasleuju se ako elimo da pravimo novi interfejs
jedna klasa m