Sunteți pe pagina 1din 16

Zoltan Hascsi

Programare orientat pe obiecte - J ava


introducere
De ce J ava?
Programare Orientat pe Obiecte intro 2 Zoltan Hascsi
Limbaje de programare
Limbajele de programare procedural sunt axate pe implementarea
algoritmilor. Datele sunt entiti externe acestora.
Exemple: Fortran, Pascal, Basic, C

ALGORITM
date
iniiale
rezultate
Limbajele de programare orientat pe obiecte sunt axate pe
implementarea obiectelor. Datele sunt n interiorul obiectelor.
Exemple: Smalltalk, J ava, C++, C#

OBIECT OBIECT OBIECT
mesaje mesaje
Programare Orientat pe Obiecte intro 3 Zoltan Hascsi
Limbaje de programare
orientat pe obiecte
Ofer suport pentru crearea i manipularea obiectelor;
Permit modelarea intuitiv a lumii reale;
Modularitate intrinsec;
Ascunderea implementrii obiectelor:
separare net ntre interfaa i implementarea unui obiect;
utilizatorul obiectelor este interesat doar de interfaa lor;
implementarea poate fi modificat fr a afecta utilizatorul;
Controlul i protecia datelor;
Reutilizarea codului;
Uurina ntreinerii i depanrii programelor;
Ideale pentru aplicaii multithreading i aplicaii distribuite
n reea (appleturi);
Programare Orientat pe Obiecte intro 4 Zoltan Hascsi
Limbajul de programare J ava
Este un limbaj de programare orientat pe obiecte.
Este unul din cele mai populare limbaje de programare.
A fost dezvoltat de firma Sun Microsystems.
Ofer suport pentru dezvoltarea facil a aplicaiilor n
reea, a aplicaiilor multithreading i a interfeei grafice cu
utilizatorul (GUI = graphic user interface).
Permite interceptarea i tratarea excepiilor n timpul
execuiei programelor fr a opri execuia lor.
Este un limbaj de programare compilat-interpretat.
Programare Orientat pe Obiecte intro 5 Zoltan Hascsi
Limbaje de programare compilate
Programul scris n limbajul de programare este translatat
n limbajul mainii pe care va fi executat acest program.
Translatarea se face naintea execuiei i se numete
compilare.
Rezultatul compilrii depinde de calculatorul i sistemul
de operare pe care va rula programul.
Pentru a fi rulat pe un alt tip de calculator sau pe un alt
sistem de operare programul trebuie (re)compilat: write
once, compile anywhere.
Exemple: Fortran, Pascal, C, C++, C#
Avantaje: viteza de execuie, optimizare;
Dezavantaje: dependen de hardware, cost;
Programare Orientat pe Obiecte intro 6 Zoltan Hascsi
Limbaje de programare compilate

cod
surs
cod
main
cod
main
cod
main
compilator
Linux
compilator
MacOS
compilator
Windows
Programare Orientat pe Obiecte intro 7 Zoltan Hascsi
Limbaje de programare interpretate
Programul scris n limbajul de programare este translatat
n limbajul mainii pe care va fi executat acest program.
Translatarea se face n timpul execuiei i se numete
interpretare.
Programe diferite pot fi rulate pe acelai calculator
folosind acelai interpretor.
Acelai program poate fi rulat pe un alt tip de calculator
sau pe un alt sistem de operare care ruleaz un
interpretor pentru acel limbaj: write once, run anywhere.
Exemple: Basic, J avascript, MATLAB
Avantaje: portabilitate, independen de hardware, cost;
Dezavantaje: vitez i optimizare reduse;
Programare Orientat pe Obiecte intro 8 Zoltan Hascsi
Limbaje de programare interpretate

cod
surs
interpretor
Linux
interpretor
MacOS
interpretor
Windows
Programare Orientat pe Obiecte intro 9 Zoltan Hascsi
Main virtual
Main virtual = calculator (main de calcul) simulat
Maina virtual (MV) este o arhitectur generic de
calculator definit printr-un un set de instruciuni i un set
de registre.
Maina virtual poate fi simulat pe orice calculator real.
Execuia unui program de ctre maina virtual se face
simulnd procesarea instruciunilor.
Erorile programului duc la oprirea mainii virtuale, nu i a
simulatorului acesteia, ceea ce face posibil
diagnosticarea erorilor.
Programare Orientat pe Obiecte intro 10 Zoltan Hascsi
Limbaje compilate-interpretate
Presupun existena unei maini virtuale.
Execuia programului = compilare + interpretare:
compilare: programul surs este mai nti translatat n limbajul
mainii virtuale.
interpretare: instruciunile mainii virtuale sunt interpretate de
simulatorul acesteia.
Un program este compilat o singur dat dar, odat
compilat, acesta poate fi executat apoi pe orice simulator
al mainii virtuale: compile once, run anywhere.
Exemple: Smalltalk, J ava
Avantaje: portabilitate, cost, mediu protejat de execuie;
Dezavantaje: overheadul mainii virtuale, vitez i
optimizare limitate;
Programare Orientat pe Obiecte intro 11 Zoltan Hascsi
Limbaje compilate-interpretate

cod
surs
cod
main
virtual
MV
sub
Linux
MV
sub
MacOS
MV
sub
Windows
compilator
MV
Programare Orientat pe Obiecte intro 12 Zoltan Hascsi
Limbajul de programare J ava
Inventat la nceputul anilor '90 n cadrul firmei Sun.
Seamn mult cu C++ dar mai simplu (fr pointeri, fr
instruciuni de gestiune a memoriei, etc).
Presupune existena unei maini J ava pentru execuia
programelor. Maina J ava poate fi virtual dar poate fi
implementat i hardware.
Portabilitate maxim a programelor. Un program J ava
poate rula pe orice calculator pe care este instalat o
main virtual J ava.
Mecanism robust de intercepie a excepiilor n timpul
execuiei bazat pe facilitatea simulatorului mainii
virtuale de a nu fi blocat sau compromis de acestea

.
Excepiile afecteaz calculatorul simulat, nu i calculatorul care simuleaz.
Programare Orientat pe Obiecte intro 13 Zoltan Hascsi
J ava opereaz numai cu obiecte
Orice program scris n J ava este un sistem de obiecte.
Comunicarea ntre programul J ava i lumea extern se
face tot prin intermediul obiectelor. Conexiunea la reea,
accesul unui fiier, afiarea pe ecran presupun
interaciunea cu obiecte specifice care ofer interfee
generice specifice conexiunii la reea, accesului
fiierelor, afirii pe ecran.
Tipurile (clasele) de obiecte de uz general, precum cele
pomenite mai sus, sunt disponibile programatorului sub
forma unor pachete de clase reunite n API (Application
Programming Interface)
Programatorul poate crea tipuri noi de obiecte cu
structur i comportament adecvat aplicaiei dorite.
Programare Orientat pe Obiecte intro 14 Zoltan Hascsi
J VM, maina virtual J ava
Programele scrise n limbajul J ava sunt rulate pe maina
virtual J ava (J VM= Java Virtual Machine).
Programul scris n J ava este mai nti translatat n
limbajul J VM, rezultnd un cod obiect ce conine numai
instruciuni ale J VM, numit bytecode.
bytecode - fiecare instruciune a J VM are 8 bii (un byte).
Codul obiect este apoi interpretat de mediul de simulare
al J VM (numit J VM Execution Environment).
J VM este o main cu stiv.
Exist i implementri fizice ale arhitecturii J VM
(picoJ ava).
Programare Orientat pe Obiecte intro 15 Zoltan Hascsi
Mediul de execuie
J RE = J ava Runtime Environment
Cuprinde maina virtual + pachetele de clase de uz
general.



API
(Biblioteca de clase de uz general)
JVM (Maina virtual J ava)
Sistemul de operare
JRE
Programare Orientat pe Obiecte intro 16 Zoltan Hascsi
Pachetul de dezvoltare
J DK = J ava Development Kit
Cuprinde J RE necesar execuiei programelor + uneltele
software necesare dezvoltrii i depanrii programelor.



API
(Biblioteca de clase de uz general)
JVM (Maina virtual J ava)
Sistemul de operare
unelte de dezvoltare (compilare,
arhivare, documentare, debug, etc)
JDK
JRE