20
Programarea orientată pe obiecte Limbajul Java

Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Embed Size (px)

Citation preview

Page 1: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Programarea orientată pe obiecte

Limbajul Java

Page 2: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Introducere (1)• Curs: Prof. Dr. ing. Ioan Jurca• Laborator:

– Asist. Dr. ing. Cristina Marinescu– Asist. drd. 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, 7th edition, Prentice Hall, 2009– Pagina laboratorului: http://labs.cs.utt.ro/labs/poo/html/pooRoot.html

• Reguli:– Examenul nu se susţine şi nu se recunoaşte pe părţi– Laboratorul se pregăteşte de acasă– Plagiatul (la laborator sau la examen) se pedepseşte

• Slide-uri in format PDF: http://www.cs.upt.ro/~ionel/POO

Page 3: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Introducere (2)

• Conţinutul cursului:– Introducere– Clase şi obiecte– Moştenire şi polimorfism– Interfeţe– Clase şi interfeţe încuibate– Excepţii şi aserţiuni– Pachete– Operaţii de intrare/ieşire– Colecţii– Programare concurentă în Java– Interfeţe grafice (GUI)

Page 4: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Introducere (3)

• Modelare şi programare• Paradigme de programare• Caracteristicile orientării pe obiecte• Elemente ale UML

• Ciclul de viaţă al software-ului• Maşini virtuale, cod virtual• Limbaje orientate pe obiecte

Page 5: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Modelare şi programare

• Model: expresie a înţelegerii unui fenomen, proces, situaţii 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 mulţi algoritmi pentru o problemă• Există distanţă conceptuală între domeniile de aplicaţii şi

limbajele de programare

Page 6: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Paradigme de programare

• Programarea procedurală: porţiunile de cod care se repetă sunt separate în subprograme

Page 7: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Paradigme de programare

• Programarea structurată

Page 8: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Caracteristicile orientării pe obiecte

• Încapsularea

• Ascunderea informaţiei/implementării

• Păstrarea stării• Identitatea obiectelor• Comunicarea prin mesaje

• Clase

• Moştenire• Polimorfism• Genericitate

Page 9: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Identitatea obiectelor

• Fiecare obiect este distinct şi identificabil separat pe toată durata existenţei, prin referinţă

• Referinţa poate fi înscrisă în mai multe locaţii• Colectarea reziduurilor (când un obiect nu mai are referinţa în nici o locaţie)

Page 10: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Clase (şi obiecte)

Page 11: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Elemente ale UML

Reprezentarea claselor

Page 12: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Elemente UML

Moştenire simplă şi multiplă:

Page 13: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Elemente UML

Page 14: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Elemente UML• Colaborare:

• Secvenţă

Page 15: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Ciclul de viaţă al software-ului

• Analiza şi specificarea cerinţelor• Proiectarea arhitecturală şi de

detaliu• Codificarea şi testarea

programului

• Lansarea în utilizare• Întreţinerea aplicaţiei

Page 16: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

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 număr redus de operatori (permite

supraîncărcarea operatorilor)• Moştenire simplă• Colectarea reziduurilor• Toate operaţiile claselor sunt publice, toate variabilele sunt private• Are ierarhie predefinită de clase• Foloseşte maşină virtuală• A introdus un mediu integrat de dezvoltare (IDE)• A fost standardizat în 1998• Nu este “agreat” de marile firme de software, cu excepţia IBM

Page 17: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

C++• Creat de Bjarne Stroustrup, cca 1983-1985, ca “un C mai bun”• Permite moştenire multiplă cu precizarea funcţiilor 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 supraîncărcaţi• Controlul accesului: private, protected, public• Nu are o ierarhie de clase standard• Concepte mai recente: spaţii 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 execuţie• Toate firmele mari de software oferă suport pentru C++

Page 18: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Eiffel• Creat de Bertrand Meyer în 1985• Denumirea sugerează “proiect terminat la timp, cu costul prevăzut, cu un

număr mic de tipare constructive robuste combinate pentru a obţine structuri complexe”

• Permite moştenire multiplă• “Proiectarea prin contract”: software-ul este construit pe baza unui

contract între clienţi (apelanţi) şi furnizori (rutine), cu obligaţii şi beneficii explicitate prin aserţiuni (precondiţii, postcondiţii şi invarianţi)

• Are mecanism pentru tratarea excepţiilor şi parametri formali generici pentru clase

• Suport oferit de creator printr-o firmă proprie, dar există şi colaborări cu firmele mari (Microsoft, SUN) pentru a include Eiffel în platformele acestora

Page 19: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

Java• Creat de J. Gosling la SUN începând din 1991, public din 1995• Mai puternic tipizat decât C++• Nu există cod în afara claselor, clasa defineşte un tip• Tipurile numerice şi boolean nu sunt considerate clase(există însă clase

înfăşurătoare)• Are moştenire simplă de implementare, conţine interfeţe pentru moştenire 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 facilităţi de programare concurentă• Compilatorul produce cod virtual (WORA- Write Once, Run Anywhere)• “Platforma Java”: J2SE, J2EE, J2ME• Nu are (încă!) standard recunoscut oficial

Page 20: Programarea orientată pe obiectestaff.cs.upt.ro/~ionel/POO/Introducere.pdf · 2010-09-27 · – Programare concurentă wn Java – InterfeFe grafice (G~I) Introducere (3) • Modelare

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 fără dificultăţi• Are multe elemente comune cu Java: clase cu moştenire simplă, interfeţe,

programare concurentă• Are colectare automată a reziduurilor, dar permite şi definirea de

destructori, neapelabili direct• Are şi caracteristici comune cu C++: supraîncărcarea operatorilor, pointeri• Delegaţi: referinţe spre funcţii, utilizaţi în programarea interactivă pentru

tratarea evenimentelor (similar cu clase interne în Java)• Suport de dezvoltare oferit de Microsoft, dar există şi variante gratuite