Programare orientata pe obiecte
Tema de casa 1
Problemele din acest set set utilizeaza paradigma de abstractizare a datelor, inclusiv supraancarcarea operatorilor si clasele compuse. Pentru fiecare problema se va crea o clasa C++ (sau eventual mai multe clase), care utilizeaza fisiere header de interfata si fisiere sursa de implementare.
Rezolvarea problemelor este
individuala. Aplicatia asociata fiecarei probleme va fi dezvoltata in mod
consola in mediul de programare Visual C++ si va contine fisierele clasei
(claselor), precum si un fisier sursa de utilizare.
Fisierul de utilizare
trebuie sa posede cel putin o functie de test (posibil main), care reprezinta o problema (cat mai ingenioasa)
conceputa de catre studenti, in care sa fie utilizate toate metodele publice ale
clasei (claselor) asociate, specificate in enunt.
Pentru fiecare problema
este specificat un numar minimal de functii publice, precum si operatorii ce
trebuie supraancarcati. Pentru unele probleme sunt precizate detalii
suplimentare (care in general sunt complementare informatiilor explicite)
privind:
datele si functiile membre ale claselor;
operatii care trebuie sa faca parte din functia de test.
Studentii pot adauga la acestea propriile lor clase, functii sau
operatori, astfel incat sa se incadreze in problema de test aleasa.
La
unele probleme exista puncte cu un grad de dificultate sporit, care sunt notate
cu (**). Acestea sunt optionale, iar in cazul in care sunt rezolvate se acorda
credite suplimentare.
Dupa rezolvarea temei de casa se vor trimite prin e-mail fisierele problemei, precum si un fisier text ce reprezinta documentatia problemei. In fisierul de documentatie trebuie sa apara:
numele autorului si grupa din care face parte;
numarul si enuntul problemei;
diagramele de clase UML ale claselor proiectate;
semnificatia si descrierea metodelor si datelor din cadrul claselor;
descrierea problemei de test si algoritmul acesteia.
La sustinerea problemei se vor acorda trei note:
o nota in intervalul [0, 7] pentru proiectarea si implementarea clasei (claselor) asociate fiecarei probleme;
o nota in intervalul [0, 2] pentru corectitudinea problemei de test si a gradului sau de dificultate;
o nota in intervalul [0, 1] pentru documentatia problemei.
Se va acorda un credit suplimentar de 1 punt pentru ingeniozitatea
problemei de test. De asemenea, se va acorda cate 1 credit suplimentar pentr
fiecare punct al unei probleme notat cu (**).
Nota finala obtinuta va fi
suma notelor partiale si se va transforma apoi intr-un numar echivalent de
puncte (maxim 2 puncte, pentru nota 10).