Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Matematică
Programul de studii: Matematică informatică - linia de studiu maghiară
Limba de predare: Maghiară

SYLLABUS

I. Általános adatok
Kód	Tantárgy neve	
MID0002	Programare orientată obiect	

Félév	Órák: C+S+L+P	Kategória	Típus	
2	2+1+1+0	fundamentala	obligatorie	

II. Foállásban az  Egyetem  oktatói
Név	Tudományos	Oktatói	Tanszék	Tevékenység	
	fokozat	státus		E	Sz	L	
DARVAY Zsolt	Dr. 	Lect.	Limbaje şi Metode de Programare	*			

Társult oktatók
Név	Tudományos	Intézmény	Állás	Tevékenység 	
	fokozat		típusa	E	Sz	L	

III. A tantárgy célkituzései
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. A tantárgy tartalma
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. Könyvészet
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. Az oktatói tevékenység heti tematikája

VII. Alkalmazott didaktikai módszerek

VIII. Értékelés
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. Kiegészíto könyvészet

	Dékán,						Tanszékvezeto,

	Dátum,						Eloadás felelose,
								Lect. Dr.  DARVAY Zsolt