Sunteți pe pagina 1din 4

Clase si obiecte

Laborator POO

Clasa st a la baza POO. Putem privi clasele ca o generalizare a not iunii de tip. O clas a cont ine: date membru (numite si atribute); funct ii membru (numite si metode). Denirea unei clase se face n dou a etape: 1. declararea clasei se utilizeaz a cuv antul cheie class ; se precizeaz a numele clasei; se precizeaz a numele si tipul atributelor, respectiv prototipurile metodelor; 2. denirea metodelor - const a n implementarea efectiv a a ec arei metode a clasei respective. Membrii unei clase pot : privat i (se utilizeaz a specicatorul de acces private ) - pot accesat i doar din interiorul clasei, de c atre membrii acesteia; protejat i (se utilizeaz a specicatorul de acces protected ) - sunt la fel ca membrii privat i, doar c a pot mo stenit i n clase derivate; publici (se utilizeaz a specicatorul de acces public ) - pot accesat i de oriunde din program. //Declararea clasei CName class CName { private: //atribute si metode ascunse tip atrName1; 1

//... protected: //atribute si metode ascunse, dar mostenite //... public: //atribute si metode publice tip atrName2; tip_return MName([lista_arg]); //... }; //Definirea metodelor clasei CName tip_return CName :: MName([lista_arg]) { //... //a se observa operatorul de rezolutie } //... Instant ierea obiectelor Dup a ce o clas a a fost denit a se pot instant ia (declara) oric ate obiecte de tipul clasei respective. Putem privi obiectele ca si o generalizare a not iunii de variabil a. Moduri de instant iere: CName objName; //obiect static CName tobjName[5]; //tablou de obiecte CName* pobjName=new CName; //obiect dinamic //... delete pobjName; Accesul la membrii privat i sau protejat i ai unui obiect instant iat dintr-o clas a se poate face doar din interiorul metodelor acelei clase. Accesul se face simplu si direct ca si la orice alt a variabil a sau ca si orice apel de funct ie. Accesul la membrii publici se face prin specicarea obiectului si folosind operatorul ., dac a se cunoa ste numele obiectului sau o referint a la acel obiect, sau folosind operatorul , dac a se cunoa ste un pointer la acel obiect. Exemple: accesare de membri publici prin nume obiect objName.atrName2=expresie; objName.MName([lista_arg]); accesare de membri publici prin pointer la obiect pobjName->atrName2=expresie; pobjName->MName([lista_arg]); 2

Reprezentarea obiectelor n memorie Pentru obiectele instant iate se aloc a memorie la fel ca si pentru variabile, deci n funct ie de modul de instant iere. Imaginea unui obiect n memorie cuprinde toate atributele sale din clasa de provenient a. Deci pentru un obiect se aloc a memorie a. . s a ncap a toate atributele. Fiecare atribut al unui obiect poate lua diferite valori pe ntreaga durat a de viat a a obiectului. O funct ie membru a unei clase se deosebe ste de o funct ie oarecare prin faptul c a aceasta are ca prim argument, un argument ascuns, care este un pointer la obiectul pentru care este apelat a metoda (obiectul curent), numit pointerul this. Acesta p astreaz a adresa de nceput a obiectului curent. Metode speciale ale unei clase: 1. Constructorul: are acela si nume cu al clasei; este folosit pentru init ializarea atributelor unui obiect al clasei respective sau pentru alocarea de resurse sistem pentru un obiect; este apelat automat la instant ierea obiectelor; poate avea sau nu argumente; nu are tip return; pot exista mai mult i constructori ntr-o clas a, dar ace stia trebuie s a aib a prototipuri diferite, pentru ca, la un moment dat, compilatorul s a poat a alege constructorul dorit, n funct ie de tipul si num arul argumentelor specicate la instant iere. 2. Destructorul: are acela si nume cu al clasei precedat de ; este folosit pentru distrugerea unui obiect (dinamic); nu are argumente; nu are tip return; exist a un singur destructor ntr-o clas a. class CName { //... public: CName([lista_arg]); //... ~CName(); }; //...

CName::CName([lista_arg]) { //corp constructor } CName::~CName() { //corp destructor } Aplicat ie. S a se implementeze clasa dreptunghi care s a aib a urmatoarele date membru: lungime, l a time si urm atoarele metode: constructor f ar a parametri (init ializeaz a atributele cu 0), constructor cu parametri pentru init ializarea atributelor, funct ii pentru calculul ariei si a perimetrului unui obiect de clas a dreptunghi, funct ii care returneaz a lungimea, respectiv l a timea unui dreptunghi, funct ii pentru citirea si a sarea atributelor unui dreptunghi.