Sunteți pe pagina 1din 4

Clase i obiecte s

Laborator POO

Clasa st la baza POO. Putem privi clasele ca o generalizare a notiunii de a tip. O clas contine: a date membru (numite i atribute); s functii membru (numite i metode). s Denirea unei clase se face dou etape: n a 1. declararea clasei se utilizeaz cuvntul cheie class; a a se precizeaz numele clasei; a se precizeaz numele i tipul atributelor, respectiv prototipurile metodea s lor; 2. denirea metodelor - const implementarea efectiv a ecrei metode a n a a a clasei respective. Membrii unei clase pot : privati (se utilizeaz specicatorul de acces private) - pot accesati doar a din interiorul clasei, de ctre membrii acesteia; a protejati (se utilizeaz specicatorul de acces protected ) - sunt la fel ca a membrii privati, doar c pot moteniti clase derivate; a s n publici (se utilizeaz specicatorul de acces public) - pot accesati de a 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 } //... Instantierea obiectelor Dup ce o clas a fost denit se pot instantia (declara) oricte obiecte de a a a a tipul clasei respective. Putem privi obiectele ca i o generalizare a notiunii de s variabil. a Moduri de instantiere: CName objName; //obiect static CName tobjName[5]; //tablou de obiecte CName* pobjName=new CName; //obiect dinamic //... delete pobjName; Accesul la membrii privati sau protejati ai unui obiect instantiat dintr-o clas a se poate face doar din interiorul metodelor acelei clase. Accesul se face simplu i direct ca i la orice alt variabil sau ca i orice apel de functie. Accesul la s s a a s membrii publici se face prin specicarea obiectului i folosind operatorul ., s dac se cunoate numele obiectului sau o referint la acel obiect, sau folosind a s a operatorul , dac se cunoate un pointer la acel obiect. a s 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 memorie n Pentru obiectele instantiate se aloc memorie la fel ca i pentru variabile, deci a s functie de modul de instantiere. Imaginea unui obiect memorie cuprinde n n toate atributele sale din clasa de provenient. Deci pentru un obiect se aloc a a memorie a. s . a ncap toate atributele. Fiecare atribut al unui obiect poate lua a diferite valori pe ntreaga durat de viat a obiectului. a a O functie membru a unei clase se deosebete de o functie oarecare prin faptul s c aceasta are ca prim argument, un argument ascuns, care este un pointer la a obiectul pentru care este apelat metoda (obiectul curent), numit pointerul this. a Acesta pstreaz adresa de a a nceput a obiectului curent. Metode speciale ale unei clase: 1. Constructorul: are acelai nume cu al clasei; s este folosit pentru initializarea atributelor unui obiect al clasei re spective sau pentru alocarea de resurse sistem pentru un obiect; este apelat automat la instantierea obiectelor; poate avea sau nu argumente; nu are tip return; pot exista mai multi constructori ntr-o clas, dar acetia trebuie s a s a aib prototipuri diferite, pentru ca, la un moment dat, compilatorul a s poat alege constructorul dorit, functie de tipul i numrul a a n s a argumentelor specicate la instantiere. 2. Destructorul: are acelai nume cu al clasei precedat de ; s este folosit pentru distrugerea unui obiect (dinamic); nu are argumente; nu are tip return; exist un singur destructor a ntr-o clas. a class CName { //... public: CName([lista_arg]); //... ~CName(); }; //...

CName::CName([lista_arg]) { //corp constructor } CName::~CName() { //corp destructor } Aplicatie. S se implementeze clasa dreptunghi care s aib urmatoarele a a a date membru: lungime, lime i urmtoarele metode: constructor fr parametri at s a aa (initializeaz atributele cu 0), constructor cu parametri pentru initializarea a atributelor, functii pentru calculul ariei i a perimetrului unui obiect de clas s a dreptunghi, functii care returneaz lungimea, respectiv limea unui dreptunghi, a at functii pentru citirea i aarea atributelor unui dreptunghi. s s

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