Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Calculatoare şi tehnologia informaţiei
Programul de studii: Ingineria informatiei - in limba romana
Limba de predare: Română

SYLLABUS

I. Date generale
Codul	Disciplina	
MID0002	Programare orientată obiect	

Semestrul	Ore: C+S+L+P	Categoria	Statutul	
2	2+1+2+0	fundamentala	obligatorie	

II. Cadre didactice cu norma de bază în Universitate
Numele şi	Titlul	Gradul	Catedra	Tipul activităţii	
prenumele	ştiinţific	didactic		C	S	L	
DIOSAN Laura Silvia		Asist.	Limbaje şi Metode de Programare	*			

Cadre didactice asociate
Numele şi	Titlul	Instituţia	Tipul	Tipul activităţii	
prenumele	ştiinţific		postului	C	S	L	

III. Obiectivele disciplinei
Dupa insusirea materialului prezentat la aceasta disciplina studentii ar trebui:
* sa poata rezolva probleme de dimensiuni mici si medii intr-o maniera orientata pe obiecte
* sa poata evidentia diferenta intre proiectarea functionala traditionala si proiectarea orientata pe obiecte
* sa inteleaga rolul mostenirii, polimorfismului, legarii dinamice si a structurilor generice in dezvoltarea unor programe reutilizabile
* sa explice si sa foloseasca diferite strategii de programare referitor la tratarea exceptiilor si asertiuni formale
* sa poate scrie programe C++ de dimensiuni mici/medii
* in timpul rezolvarii unei probleme sa foloseasca clase scrise de alti programatori
* sa inteleaga si sa foloseasca structurile de date fundamentale: colectii, multimi, tabele, liste, stive, cozi, arbori, grafe	

IV. Conţinutul disciplinei
In prima parte a cursului sunt introduse gradat conceptele programarii orientate pe obiecte. Pentru exemplificari este folosit limbajul C++. Sunt supuse dezbaterilor diferite structuri de date ce au fost prezentate in cursul de introducere in informatica. In partea a doua sunt prezentate subiecte mai avansate de programare C++: ierarhii de clase standard, programarea dirijata de evenimente, componente C++ pentru interfata cu utilizatorul, tratarea exceptiilor.
1.	Elemente de baza ale limbajului C++. 
-	Elemente lexicale. Operatori. Conversii.
-	Tipuri de date. Variabile. Constante. 
-	Domeniu de vizibilitate si durata de viata a variabilelor.
-	Spatii de nume.
2.	Instructiuni si functii C++.
-	Instructiuni  C++.
-	Declararea si definitia functiilor in C++.
-	Supraincarcarea functiilor.
-	Functii inline.
3.	Tipuri de date derivate si utilizator si alocare dinamica in C++. 
-	Tipurile tablou si structura.
-	Tipurile pointer si referinta. 
-	Alocarea si dealocarea memoriei.
-	Pointeri la functii si pointeri void.
4.	Programare modulara in C++.
-	Fisiere header. Biblioteci.
-	Implementari modulare de tipuri abstracte de date.
-	Folosirea tipului pointer void pentru obtinerea genericitatii.
5.	Metoda programarii orientate-obiect in C++. 
-	Clase si obiecte.
-	Membrii unei clase. Specificatori de acces.
-	Constructori / destructori
-	Diagrame UML pentru clase (membrii, acces).
-	Relatia de asociere/agregare intre clase - reprezentare UML
6.	Supraincarcarea operatorilor. Membrii statici. Friends. 
7.	Relatia de mostenire  
-	Mostenire simpla. Clase derivate.
-	Principiul substitutiei.
-	Suprascrierea metodelor.
-	Mostenire multipla. 
-	Relatia de specializare/generalizare intre clase - reprezentare UML.
8.	Polimorfism.  
-	Metode virtuale.
-	Legare dinamica. 
-	Mostenire virtuala.
-	Reutilizare cod (mostenire/compozitie).
-	Conversii (upcast/downcast).
9.	Proiectare orientata-obiect si proiectare bazata pe interfete. 
-	Clase abstracte, interfete.
-	Reprezentare UML pentru interfete.
-	Proiectarea orientata-obiect a unei biblioteci de structuri de date.
10.	Operatii de intrare/iesire.  
-	Fluxuri de intrare/ iesire. Ierarhii de clase pentru I/O.
-	Formatare. Manipulatori.
-	Lucrul cu fisiere.
11.	Sabloane (Template). 
-	Functii template. Clase template. 
-	Reutilizarea codului sursa.
12.	Biblioteca STL 
-	Clase container si iterator.
-	 Folosirea algoritmilor din STL.
13.	Tratarea exceptiilor. 
-	Notiunea de exceptie in programare
-	Tratarea exceptiilor in C++.
14.	Mediul Visual C++ . 
-	Componente pentru interfata cu utilizatorul. 
-	Programare dirijata de evenimente .

V. Bibliografie
1. A.V. Aho, J.E. Hopcroft, J.D. Ullman, Data Structures and Algorithms, Addisson-Wessley Publ., Massachusetts, 1983.
2. R. Andonie, I. Garbacea, Algoritmi fundamentali. O perspectiva C++, Editura Libris, 
3. Alexandrescu, Programarea modernă in C++. Programare generică si modele de proiectare aplicate, Editura Teora, 2002
4. M. Frentiu, B. Parv, Elaborarea programelor. Metode si tehnici moderne, Ed. Promedia, Cluj-Napoca, 1994.
5. E. Horowitz, S. Sahni, D. Mehta, Fundamentals of Data Structures in C++, Computer Science Press, Oxford, 1995.
6. K.A. Lambert, D.W. Nance, T.L. Naps, Introduction to Computer Science with C++, West Publishing Co., New-York, 1996.
7. L. Negrescu, Limbajul C++, Ed. Albastra,Cluj-Napoca 1996.
Cluj_Napoca, 1995.
8. Dan Roman, Ingineria programarii obiectuale, Editura Albastra, Cluj_Napoca, 1996.
9. B. Stroustup, The C++ Programming Language, Addison Wesley, 1998.

VI. Tematica activităţilor didactice pe săptămâni

VII. Metode didactice folosite

VIII. Evaluare
Nota finala se calculeaza ca o medie ponderata astfel: 
A. Activitatea de laborator N1: 20% 
B. Activitate seminar N2:10%
C. Lucrare scrisa N3: 50%
D. Proba practica N4: 20%
Lucrarea scrisa este sustinuta in timpul sesiunii ca si examen final. Proba practica va fi sustinuta in ultima saptamana a semestrului.
Lucrarea scrisa consta din intrebari teoretice si exercitii, iar proba practica din rezolvarea unei probleme pe calculator

IX. Bibliografie suplimentară

	Decan,							Sef de catedra,

	Data,							Titular curs,
								Asist.  DIOSAN Laura Silvia