17.04.2013 Views

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

Florian Moraru PROGRAMAREA CALCULATOARELOR în limbajul C

SHOW MORE
SHOW LESS

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 ) {

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!