Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Matematică
Programul de studii: Matematică - linia de studiu română
Limba de predare: Română

SYLLABUS

I. Date generale
Codul	Disciplina	
MID0002	Programare orientată obiect	

Semestrul	Ore: C+S+L	Categoria	Statutul	
2	2+0+2	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	
COJOCAR Grigoreta Sofia	Dr.	Lect.	Limbaje şi Metode de Programare	*			
GROSAN Crina	Dr.	Lect.	Limbaje şi Metode de Programare			*	

Cadre didactice asociate
Numele şi	Titlul	Instituţia	Tipul	Tipul activităţii	
prenumele	ştiinţific		postului	C	S	L	
BARTHA Attila		Universitatea “Babes-Bolyai”	Drd			*	

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.	

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. R. Andonie, I. Garbacea, Algoritmi fundamentali. O perspectiva C++, Editura Libris, 
2. Alexandrescu, Programarea modernă in C++. Programare generică si modele de proiectare aplicate, Editura Teora, 2002
3.  E. Horowitz, S. Sahni, D. Mehta, Fundamentals of Data Structures in C++, Computer Science Press, Oxford, 1995.
4. K.A. Lambert, D.W. Nance, T.L. Naps, Introduction to Computer Science with C++, West Publishing Co., New-York, 1996.
5. L. Negrescu, Limbajul C++, Ed. Albastra,Cluj-Napoca 1996.
6. Dan Roman, Ingineria programarii obiectuale, Editura Albastra, Cluj_Napoca, 1996.
7. B. Stroustup, The C++ Programming Language, Addison Wesley, 1998.
8. Bruce Eckel, Thinking in C++, 2nd Edition, Prentice Hall, 2000

VI. Tematica activităţilor didactice pe săptămâni
Curs
1.	Elemente de baza ale limbajului C++.
2.	Instructiuni si functii C++.
3.	Tipuri de date derivate si utilizator si alocare dinamica in C++. 
4.	Programare modulara in C++.
5.	Metoda programarii orientate-obiect in C++.
6.	Supraincarcarea operatorilor. Membrii statici. Friends. 
7.	Relatia de mostenire  
8.	Polimorfism.  
9.	Proiectare orientata-obiect si proiectare bazata pe interfete. 
10.	Operatii de intrare/iesire.  
11.	Sabloane (Template). 
12.	Tratarea exceptiilor. 
13.	Biblioteca STL 
14.	Rezolvarea problemelor folosind POO
Laborator
1.	Programe simple C++
2.	Programare modulara C++
3.	Implementarea unui TAD in C++
4.	Folosirea pointerilor la void
5.	Clase simple
6.	Implementarea unei structuri de date folosind clase
7.	Mostenire
8.	Sabloane (template)
9.	Intrari/Iesiri
10.	Tratarea exceptiilor
11.	Dezvoltarea unei biblioteci de structuri de date generice	

VII. Metode didactice folosite
Prelegeri, expuneri, conversatii, exercitii, studiu individual.	

VIII. Evaluare
Nota finala se calculeaza ca o medie ponderata astfel: 
A. Activitatea de laborator N1: 20% 
C. Lucrare scrisa N3: 50%
D. Proba practica N4: 30%
Lucrarea scrisa si proba practica sunt sustinute in timpul sesiunii ca si examen final. Lucrarea scrisa consta din intrebari teoretice si exercitii, iar proba practica din rezolvarea unei probleme folosind programarea orientata pe obiecte.	

IX. Bibliografie suplimentară
1. A.V. Aho, J.E. Hopcroft, J.D. Ullman, Data Structures and Algorithms, Addisson-Wessley Publ., Massachusetts, 1983.
2. M. Frentiu, B. Parv, Elaborarea programelor. Metode si tehnici moderne, Ed. Promedia, Cluj-Napoca, 1994.	

	Decan,							Sef de catedra,

	Data,							Titular curs,
	13.03.2009						Lect. Dr. COJOCAR Grigoreta Sofia