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+0+2
fundamentala
obligatorie
Informatică
2
2+2+2
fundamentala
obligatorie
Matematică informatică
2
2+0+2
fundamentala
obligatorie
Matematici aplicate
2
2+0+2
fundamentala
obligatorie
Titularii de disciplina
Conf. Dr. NICULESCU Virginia,  vniculescucs.ubbcluj.ro
Lect. Dr. PREJMEREAN Vasile,  percs.ubbcluj.ro
Lect. Dr. DARVAY Zsolt,  darvaycs.ubbcluj.ro
Lect. Dr. TRÎMBITAS Gabriela,  gabitrcs.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 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 pe calculator
Legaturi: Syllabus-urile tuturor disciplinelor
Versiunea in limba engleza a acestei discipline
Versiunea in format rtf a acestei discipline