Universitatea "Babeş-Bolyai" din Cluj-Napoca

Facultatea de Matematică şi Informatică
FISA DISCIPLINEI

Programare orientată obiect Object oriented programming
Cod
Semes-
trul
Ore: C+S+L
Credite
Tipul
Sectia
MI033
4
2+0+2
5
obligatorie
Matematică-Informatică
(Mathematics-Computer Science)
MI033
3
2+1+2
7
obligatorie
Tehnologie Informatică
(College of Computer Technology)
MI033
4
2+0+2
5
obligatorie
Matematica Economica
(Mathematics Economics)
Cadre didactice indrumatoare Teaching Staff in Charge
Lect. LAZĂR Ioan, ilazar@cs.ubbcluj.ro
Obiective Aims
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
On completion of the class, a student should be able:
* to prepare an object-oriented design of small/medium scale problems
* to demonstrate the differences between traditional imperative design and object-oriented design
* to explain class structures as fundamental, modular building blocks
* to understand the role of inheritance, polymorphism, dynamic binding and generic structures in building reusable code
* to explain and to use defensive programming strategies, employing formal assertions and exception handling
* to write small/medium scale C++ programs
* to use classes written by other programmers when constructing their systems
* to understand and to use fundamental data structures: collections, sets, dictionaries, lists, stacks, queues, trees, graphs.
Continut
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. Limbajul C++
* Tipuri de date de baza si structuri de control
* Clase C++
* Aplicatii C++
2. Tipuri abstracte de data (TAD) si clase C++
* TAD tablou, colectie, multime, tabel
* Clase C++ ce implementeaza TAD colectie, multime, tabel
3. Subtipizare si mostenire
* TAD container, stiva, coada si coada cu prioritati
* Clase C++ ce implementeaza TAD container, stiva si coada
4. Definirea unei ierarhii de clase C++
* TAD lista simplu inlantuita, si iterator pe o structura de date de tip lista
* Reprezentarea si implementarea listelor inlantuite in C++
* Diferite implementari pentru TAD colectie, tabel, coada, coada cu prioritati
5. Clase abstracte (interfete) si mostenire multipla
* TAD lista liniara, lista ordonata, iteratori pe liste
* Clase abstracte in cadrul unei ierarhii de clase pentru liste
* Mostenire multipla si iteratori pe liste
6. Polimorfism si legare dinamica
* Liste generalizate
7. Clase si functii parametrice
* Arbori binari
* Arbori binari de cautare
* Grafe
8. Tratarea exceptiilor
9. Componente pentru interfata cu utilizatorul in Visual C++
10. Programare dirijata de evenimente in Visual C++
Bibliografie
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.
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. B. Parv, A. Vancea, Fundamentele limbajelor de programare, Microinformatica, Cluj-Napoca, 1996.
7. R. Andonie, I. Garbacea, Algoritmi fundamentali. O perspectiva C++, Editura Libris, Cluj_Napoca, 1995.
8. B. Stroustup, The C++ Programming Language, Addison Wesley, 1998.
9. L. Tambulea, Structuri de date si banci de date, (Lito.) Univ. "Babes-Bolyai" Cluj-Napoca, Facultatea de Matematica si Informatica, Cluj-Napoca, 1992.
10. T. Toadere, Elemente de teoria grafelor, (Lito.) Univ. "Babes-Bolyai" Cluj-Napoca, Facultatea de Matematica si Informatica, Cluj-Napoca, 1992.
Evaluare Assessment
Nota finala este media ponderata (60%) dintre nota obtinuta la examenul scris (sfarsit de semestru) si nota obtinuta pe activitatea din cadrul laboratoarelor (40%).
A written 2-hour examination contributes 60% of the assessment for this course. The other 40% is based on continuous assessment of exercises carried out during practical classes - laboratories.