Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licență

FISA DISCIPLINEI

Codul
Denumirea disciplinei
MID0002 Programare orientată obiect
Specializarea
Semestrul
Ore: C+S+L
Categoria
Statutul
Matematică
2
2+1+1
fundamentala
obligatorie
Informatică
2
2+1+2
fundamentala
obligatorie
Matematică informatică
2
2+1+1
fundamentala
obligatorie
Ingineria informatiei
2
2+1+2
fundamentala
obligatorie
Titularii de disciplina
Lect. GURAN Adriana Mihaela,  adrianacs.ubbcluj.ro
Lect. Dr. DARVAY Zsolt,  darvaycs.ubbcluj.ro
Lect. Dr. TRÎMBITAS Gabriela,  gabitrcs.ubbcluj.ro
Asist. DIOSAN Laura Silvia,  laurascs.ubbcluj.ro
Lect. Dr. OLAH-GAL Robert,  robert.olah-galcs.ubbcluj.ro
Obiective
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
Continutul
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 .
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.
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
Legaturi: Syllabus-urile tuturor disciplinelor
Versiunea in limba engleza a acestei discipline
Versiunea in format rtf a acestei discipline