Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
16. Programare orientatã pe obiecte <strong>în</strong> C++<br />
Clase si obiecte<br />
Programarea cu obiecte (POO) este un alt mod de abordare a programãrii decât<br />
programarea proceduralã (<strong>în</strong> limbaje ca C si Pascal), cu avantaje <strong>în</strong> dezvoltarea<br />
programelor mari.<br />
In programarea proceduralã sarcina programatorului este de a specifica actiuni de<br />
prelucrare, sub forma de proceduri (functii, subprograme). Un program C sau Pascal<br />
este o colectie de functii (si/sau proceduri). Datele prelucrate se transmit ca argumente<br />
(parametri) de la o functie la alta. Pentru anumite operatii uzuale existã functii<br />
predefinite (de bibliotecã).<br />
In programarea orientatã pe obiecte programatorul lucreazã cu obiecte: declarã<br />
obiectele necesare aplicatiei (si atributele lor), iar prelucrãrile sunt exprimate ca actiuni<br />
asupra obiectelor (prin apeluri de metode). Sunt prevãzute mai multe tipuri de obiecte<br />
predefinite (clase de bibliotecã), dar orice programator poate defini noi tipuri de<br />
obiecte (noi clase). Un obiect contine <strong>în</strong> principal date.<br />
O clasã este un tip de date asemãnãtor unei structuri din C (“struct”), dar care<br />
contine si functii pentru operatiile asociate datelor continute in clasã. De exemplu, o<br />
clasã pentru date calendaristice “Date” contine ca date trei numere <strong>în</strong>tregi ce reprezintã<br />
ziua, luna si anul, iar ca metode ale clasei are functii pentru compararea a douã date,<br />
pentru calculul diferentei a douã date, pentru afisarea unei date <strong>în</strong>tr-un anumit format<br />
(sau pentru crearea unui sir de caractere cu zi, lunã, an <strong>în</strong> vederea afisãrii), s.a.<br />
Un obiect corespunde unei variabile de un tip structurã; de exemplu un obiect de tip<br />
“Date” contine o datã concretã, cum ar fi {25, 12, 2004}. Asupra unui astfel de obiect<br />
sunt permise numai operatiile prevãzute de metodele clasei “Date”.<br />
O clasã corespunde unei notiuni abstracte cum ar fi “orice datã calendaristicã”, iar<br />
un obiect este un caz concret (o realizare a conceptului sau o instantiere a clasei).<br />
Vom prezenta câteva exemple (<strong>în</strong> <strong>limbajul</strong> C++) care sã ilustreze comparativ modul<br />
de abordare al programãrii procedurale si al programãrii orientate pe obiecte.<br />
Primul exemplu comparã douã date calendaristice si afiseazã relatia dintre ele.<br />
/* operatii cu structura "date" in C */<br />
typedef struct {<br />
int zi, luna, an ;<br />
} date ;<br />
/* transforma data in sir de car */<br />
char * toString (date d) {<br />
char * str = (char*) malloc(14); // sir de forma zz-ll-aaaa<br />
sprintf(str," %02d-%02d-%04d ",d.zi,d.luna,d.an);<br />
return str;<br />
}<br />
/* comparare date calendaristice */<br />
int cmpdat (date d1,date d2 ) {