Sunteți pe pagina 1din 13

POO – Programare orientata obiect ( Virtual Studio - C++/CLI/CLR )

https://pasiinviata.files.wordpress.com/2011/11/poo_in_limbajul_c.pdf

Ambele fac copieri de obiecte, dar deosebirile sunt esentiale: th timp ce constructorul de copiere copiaza obiectul sursa intr-o zona
neinitializaté in care isi construieste un obiect nou, operatorul de atribuire lucreazA cu douA obiecte deja existente, sursd si
destinatie, avand doar sarcina de copiere a informatiilor dintr-o zona in alta.

Constructorul de copiere este invocat la:


® crearea de obiectelor cu initializare, pornind de la un obiect care existi (cazul persoana p3 = pt; );
® apelul unei functii care lucreaz4 cu obiecte transferate prin valoare, cand este nevoie de crearea unei copii a obiectului pe stiva
(cazul f( p1); );

® returnarea dintr-o functie a unui obiect, prin valoare (return p41; ).

Sa revenim insa la constructorul de copiere si operatorul de atribuire fn situatia obiectelor cu extensii fn memoria dinamica.

void main() { cls c1(1), c2 = c1; cout << "\n "<< c2.x; }
avem initial obiectul c1
care are un atribut de tip intreg cu valoarea 1
iar c2 se va instantia cu valoarea lui c1 prin c2=c1
cls(cls & c) { cout << "\n Constructor de copiere";}

in loc de cls(int a = 0) : x(a)cls(int a=0) {x=a;}cls(int a) {x=a=0;}


de asemenea puteti sa utilizati constructorii de copiere

si sa creati niste obiecte fara sa utilizati pointeri

adica in loc de Pers *p1 = new Pers(); sa avem Pers p1;

Sau Pers p1("Ion",20); de exemplu in loc de Pers *p1 = new Pers ("Ion",20);

cine termina este rugat sa trimita aplicatia rezolvata pe adresa

cosmin.tomozei@hotmail.com

cu subject

TEMA_POO_IFR_20_Nume_Prenume
vezi pag 17 separarea interfetei de implementare separation of concerns exemplul cu clasa madic si clasa
Pers dupa definirea clasei in Pers.h vom include in fisierul principal, in care este functia main fisierul Pers.h

#include "Pers.h"
docs.microsoft.com

documentatie foarte utila pentru Visual C++

faceti o modificare

in sensul de a schimba char nume[20] cu un string

si de a utiliza in for Console::WrriteLine in loc de cout<<

functii de acces pe nume si pe varsta din clasa Pers


astfel incat sa pot seta numele si varsta

void set_nume( string num) {this->nume =num;}

void set_varsta(int vs) {this->varsta =vs;}

p1.set_varsta(20);

p1->set_varsta(20);

daca am pointer

p1 = new Pers ("Ion",20);

p1->set_varsta(25);

p1("Ion",20);

p1.set_varsta(25);

Cam asa arata: e bine ,debifati managed si dati numele pers


a incepem cu o prima aplicatiecu clase de obiecte / clasa Angajat

pe care am sa va rog sa o faceti utilizand CLR console application


mai intai faceti clasa Angajat

dupa care v a rog sa cititi din manual de la pagina 107 despre derivare si mostenire

si sa adaugati clasa Inginer

Dupa aceea, puteti sa adaugati dvs o clasa - clasa Profesor

care sa fie derivata din clasa Angajat

Deci, v-as ruga acum sa incepeti lucrul la clasa angajar si voi intra si eu cand terminati
exempllul de la pagina 110 cu derivarea claselor si conlucrarea constructorilor

Care e diferenta intre Console::WriteLine ? Diferenta e una fundamentala . Una e din namespace-ul standard
din iostream ,iar cealalta este din .net framework

Tema_2_IFR20_Nume_prenume

deci care aplicatie sa trimitem ? Raspuns : aplicatia prima cu angajat si inginer


astazi v-as ruga sa cititi din manual capitolul despre Supraincarcarea operatorilor
la aceasta varianta as dori sa faceti o varianta proprie pe care sa o modificati, in sensul in care sa aveti tipul
string in loc de char[]

si sa adaugati operatorii - -= prin functii membre si/sau friend

dupa care sa facem varianta managed C++


aceasta e varianta managed

in care sa adaugati de asemenea acesti operatori - -=

dupa care le trimiteti intr-o arhiva fara executabile la adresa mea de hotmail

Tema_3_20_Nume_Prenume

dau un bonus la cine adauga la clasele existente si clase derivate

teoria de la supraincarcarea operatorilor este la pagina 54 din manual

Trimiteți când puteti doar sa fie înainte de examen

S-ar putea să vă placă și