You are on page 1of 20

Programarea orientat pe

obiecte
Limbajul Java
Introducere (1)
Curs: Prof. Dr. ing. Ioan Jurca
Laborator:
Asist. Dr. ing. Cristina Marinescu
Asist. Dr. Ing. Petru Mihancea
Examen:
Prima prezentare: sesiunea de iarn
Prez. 2 i 3: pe parcursul sem. II
Bibliografie:
I. Jurca: Programarea orientat pe obiecte. Limbajul Java, Ed. de Vest, 2005
K. Arnold, J. Gosling, D. Holmes: The Java Programming Language, 4th edition,
Addison Wesley, 2005
C. Marinescu, P. Mihancea:Programare orientata pe obiecte in limbajul Java, Ed.
Politehnica, 2006
Y. Daniel Liang: Introduction to Java Programming, 8 th edition, Prentice Hall, 2010
Pagina disciplinei: http://loose.upt.ro/~oose/pmwiki.php/OOP
Reguli:
Examenul nu se susine i nu se recunoate pe pri
Laboratorul se pregtete de acas
Plagiatul (la laborator sau la examen) se pedepsete
Introducere (2)
Coninutul cursului:
Introducere
Clase i obiecte
Motenire i polimorfism
Interfee
Clase i interfee ncuibate
Excepii i aseriuni
Pachete
Operaii de intrare/ieire
Colecii
Programare concurent n Java
Interfee grafice (GUI)
Introducere (3)
Modelare i programare
Paradigme de programare
Caracteristicile orientrii pe obiecte
Elemente ale UML
Ciclul de via al software-ului
Maini virtuale, cod virtual
Limbaje orientate pe obiecte
Modelare i programare
Model: expresie a nelegerii unui fenomen, proces, situaii la
un moment dat
Modelele au dou roluri: explicativ i predictiv
Modele: conceptuale (abstracte) sau fizice
Modelul nu se confund cu realitatea
Calculatorul: model fizic bazat pe un model conceptual pentru
calcul
Model de calcul concret =algoritm ==> program
Exist mai multe modele generice de calcul =>mai multe
arhitecturi de calculatoare
Exist mai muli algoritmi pentru o problem
Exist distan conceptual ntre domeniile de aplicaii i
limbajele de programare
Paradigme de programare
Programarea procedural: poriunile de cod care se repet sunt separate n
subprograme
Paradigme de programare

Programarea structurat
Caracteristicile orientrii pe obiecte
ncapsularea
Ascunderea
informaiei/implementrii
Pstrarea strii
Identitatea obiectelor
Comunicarea prin mesaje
Clase
Motenire
Polimorfism
Genericitate
Identitatea obiectelor
Fiecare obiect este distinct i identificabil separat pe toat durata existenei, prin
referin
Referina poate fi nscris n mai multe locaii
Colectarea reziduurilor (cnd un obiect nu mai are referina n nici o locaie)
Clase (i obiecte)
Elemente ale UML
Reprezentarea claselor
Elemente UML
Motenire simpl i multipl:
Elemente UML
Elemente UML
Colaborare:

Secven
Ciclul de via al software-ului
Analiza i specificarea cerinelor
Proiectarea arhitectural i de
detaliu
Codificarea i testarea
programului
Lansarea n utilizare
ntreinerea aplicaiei
Smalltalk
Creat cca 1970: la firma Xerox, colectiv condus de Alan Kay
Cel mai pur limbaj OO
Slab tipizat
Doar 5 cuvinte cheie i un numr redus de operatori (permite
suprancrcarea operatorilor)
Motenire simpl
Colectarea reziduurilor
Toate operaiile claselor sunt publice, toate variabilele sunt private
Are ierarhie predefinit de clase
Folosete main virtual
A introdus un mediu integrat de dezvoltare (IDE)
A fost standardizat n 1998
Nu este agreat de marile firme de software, cu excepia IBM
C++
Creat de Bjarne Stroustrup, cca 1983-1985, ca un C mai bun
Permite motenire multipl cu precizarea funciilor care pot fi nlocuite n
subclase
Obiectele se pot crea fie prin declararea unor variabile, fie prin constructori
Nu are colectare a reziduurilor, clasele au destructori
Operatorii pot fi suprancrcai
Controlul accesului: private, protected, public
Nu are o ierarhie de clase standard
Concepte mai recente: spaii de nume, tipare pentru genericitate
Are bibliotec standard de tipare (STL)
Este un limbaj complex, nu este pur obiectual
Compilatoarele genereaz cod executabil, foarte eficient la execuie
Toate firmele mari de software ofer suport pentru C++
Eiffel
Creat de Bertrand Meyer n 1985
Denumirea sugereaz proiect terminat la timp, cu costul prevzut, cu un
numr mic de tipare constructive robuste combinate pentru a obine
structuri complexe
Permite motenire multipl
Proiectarea prin contract: software-ul este construit pe baza unui
contract ntre clieni (apelani) i furnizori (rutine), cu obligaii i beneficii
explicitate prin aseriuni (precondiii, postcondiii i invariani)
Are mecanism pentru tratarea excepiilor i parametri formali generici
pentru clase
Suport oferit de creator printr-o firm proprie, dar exist i colaborri cu
firmele mari (Microsoft, SUN) pentru a include Eiffel n platformele
acestora
Java
Creat de J. Gosling la SUN ncepnd din 1991, public din 1995
Mai puternic tipizat dect C++
Nu exist cod n afara claselor, clasa definete un tip
Tipurile numerice i boolean nu sunt considerate clase(exist ns clase
nfurtoare)
Are motenire simpl de implementare, conine interfee pentru motenire multipl
de proiectare
Nu are pointeri !!
Obiectele se creeaz numai prin alocare dinamic (operatorul new) cu apelarea
explicit a unui constructor
Are ierarhie predefinit (clasa Object)
Toate metodele sunt implicit virtuale (pot fi nlocuite n subclase)
Include faciliti de programare concurent
Compilatorul produce cod virtual (WORA- Write Once, Run Anywhere)
Platforma Java: J2SE, J2EE, J2ME
Nu are (nc!) standard recunoscut oficial
C#
Introdus n 2000 ca parte a platformei .NET (Microsoft) de A. Hejlsberg i
S. Wiltamuth
.NET permite integrarea limbajelor de programare, astfel ca programe
scrise n diverse limbaje s poat colabora fr dificulti
Are multe elemente comune cu Java: clase cu motenire simpl, interfee,
programare concurent
Are colectare automat a reziduurilor, dar permite i definirea de
destructori, neapelabili direct
Are i caracteristici comune cu C++: suprancrcarea operatorilor, pointeri
Delegai: referine spre funcii, utilizai n programarea interactiv pentru
tratarea evenimentelor (similar cu clase interne n Java)
Suport de dezvoltare oferit de Microsoft, dar exist i variante gratuite

You might also like