Showing posts with label metode virtuale. Show all posts
Showing posts with label metode virtuale. Show all posts

Tuesday, December 29, 2015

Limbajul C++. Implementarea unei aplicatii cu clase derivate


Urmatorul enunt reprezinta un assignment aferent uneia dintre lectiile din cadrul cursului "Bazele programarii C++" sustinut la InfoAcademy.

Aceasta prezentare nu are intentia de a compromite procesul didactic, ci de a oferi o perspectiva asupra felului in care sunt prezentate in viata reala cerintele de implementare a unui proiect.

Enuntarea si implementarea cerintelor sunt abordate pas cu pas.

Se lucreaza intr-un spatiu de nume intitulat "Assignment9".

Declaratiile de clase sunt salvate in fisiere header (.h). Definitiile sunt salvate in fisiere sursa (.cpp).

Limbajul C++. Clonarea obiectelor folosind metodele virtuale si constructorul de copiere


Realizarea unei clone a unui obiect presupune crearea unui obiect nou, cu existenta independenta de cel clonat, care ocupa in memorie un spatiu distinct de cel clonat dar care are toate atributele si metodele identice cu ale celui clonat.

Mecanismul urmator foloseste constructorul de copiere si o metoda declarata virtuala, care este supracrisa in clasa derivata. Declararea virtuala este necesara pentru apelul corect al metodelor: metoda Clone va fi cautata intai in clasa derivata, indiferent de scenariu - fie ca variabila are tipul clasei de baza sau cel al clasei derivate.

Stim ca o variabila initializata cu o instanta a clasei derivate are si tipul clasei de baza (invers nu!)

Suprascrierea metodei implica prezervarea aceleiasi semnaturi (nume, argumente, tip de return) dar o implementare diferita in clasa derivata.