This shows you the differences between two versions of the page.
|
poo-is-ab:laboratoare:02 [2025/10/04 18:30] razvan.cristea0106 [Concluzii] |
poo-is-ab:laboratoare:02 [2025/12/07 13:26] (current) razvan.cristea0106 [Diferențe C/C++] |
||
|---|---|---|---|
| Line 472: | Line 472: | ||
| === Funcții cu același nume === | === Funcții cu același nume === | ||
| - | În C++ avem avantajul de a declara funcții, procedeu cunoscut sub numele de **supraîncărcare a funcțiilor**, cu **același nume** dar care să difere prin **numărul și/sau tipul parametrilor**. Această modalitate de declarare a funcțiilor este cunoscută în **Programarea Orientată Obiect** sub numele de **polimorfism**, care în limba greacă înseamnă **multe forme**. Vom oferi mai multe detalii pe parcursul întregului semestru despre acest principiu al **POO**. | + | În C++ avem posibilitatea de a declara funcții cu **același nume** dar care să difere prin **numărul și/sau tipul parametrilor**, acest procedeu fiind cunoscut și sub numele de **supraîncărcare a funcțiilor**. Această modalitate de declarare a funcțiilor este cunoscută în **Programarea Orientată Obiect** sub numele de **polimorfism**, care în limba greacă înseamnă **multe forme**. Vom oferi mai multe detalii pe parcursul întregului semestru despre acest principiu al **POO**. |
| Să urmărim exemplul de cod de mai jos care ilustrează polimorfismul a patru funcții. | Să urmărim exemplul de cod de mai jos care ilustrează polimorfismul a patru funcții. | ||
| Line 510: | Line 510: | ||
| </code> | </code> | ||
| - | <note important>Trebuie subliniat faptul că **tipul de return** al unei funcții **nu** este luat în considerare în contextul polimorfismului prin supraîncărcare. Ceea ce definește **polimorfismul** în acest caz este exclusiv **semnătura funcției**, adică **numele împreună cu lista și tipurile parametrilor**. De aceea, două funcții care diferă doar prin tipul valorii returnate **nu** sunt considerate supraîncărcări valide. În schimb, diferențele în **numărul**, **tipul** sau chiar **ordinea** parametrilor constituie forme acceptate de **polimorfism**, așa cum se poate observa în cazul ultimelor două funcții din exemplul de mai sus.</note> | + | <note important>Trebuie subliniat faptul că **tipul de return** al unei funcții **nu** este luat în considerare în contextul **polimorfismului prin supraîncărcare**. Ceea ce definește **polimorfismul** în acest caz este exclusiv **semnătura funcției**, adică **numele împreună cu lista și tipurile parametrilor**. De aceea, două funcții care diferă doar prin tipul valorii returnate **nu** sunt considerate supraîncărcări valide, generând astfel o eroare de compilare. În schimb, funcțiile care diferă prin **numărul**, **tipul** sau chiar **ordinea** parametrilor reprezintă forme acceptate de **polimorfism**, așa cum se poate observa în cazul ultimelor patru funcții din cadrul exemplului de mai sus.</note> |
| ==== Concluzii ==== | ==== Concluzii ==== | ||
| Prin parcurgerea acestui laborator, putem spune cu certitudine că limbajul C++ reprezintă o evoluție firească a limbajului C, adăugând numeroase concepte și mecanisme care ne fac munca de programatori mai simplă și mai expresivă. Am văzut că librăria **fstream**, alocarea dinamică realizată într-un mod simplificat, introducerea referințelor, posibilitatea de a supraîncărca funcții și suportul pentru **Programarea Orientată Obiect** diferențiază C++ de C și ne oferă un cadru mai flexibil pentru dezvoltarea aplicațiilor. Totuși, este important să reținem faptul că C++ rămâne compatibil cu C la nivel de bază, ceea ce îl face un limbaj versatil, potrivit atât pentru stilul **procedural**, cât și pentru cel **orientat pe obiecte**. | Prin parcurgerea acestui laborator, putem spune cu certitudine că limbajul C++ reprezintă o evoluție firească a limbajului C, adăugând numeroase concepte și mecanisme care ne fac munca de programatori mai simplă și mai expresivă. Am văzut că librăria **fstream**, alocarea dinamică realizată într-un mod simplificat, introducerea referințelor, posibilitatea de a supraîncărca funcții și suportul pentru **Programarea Orientată Obiect** diferențiază C++ de C și ne oferă un cadru mai flexibil pentru dezvoltarea aplicațiilor. Totuși, este important să reținem faptul că C++ rămâne compatibil cu C la nivel de bază, ceea ce îl face un limbaj versatil, potrivit atât pentru stilul **procedural**, cât și pentru cel **orientat pe obiecte**. | ||