Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-is-ab:laboratoare:02 [2025/10/01 21:16]
razvan.cristea0106 [Diferențe C/C++]
poo-is-ab:laboratoare:02 [2025/12/07 13:26] (current)
razvan.cristea0106 [Diferențe C/C++]
Line 12: Line 12:
 ==== Introducere ==== ==== Introducere ====
  
-În cadrul acestui laborator vom evidenția principalele diferențe dintre limbajele C și C++. Vom analiza, prin exemple simple, modul în care C++ extinde caracteristicile limbajului C și vom pune bazele unei înțelegeri mai profunde a acestuia. Astfel, vom avea un punct de plecare solid pentru paradigma **Orientată Obiect (OO)** pe care o vom studia începând cu laboratorul următor.+În cadrul acestui laborator vom evidenția principalele diferențe dintre limbajele C și C++. Vom analiza, prin exemple simple, modul în care C++ extinde caracteristicile limbajului C și vom pune bazele unei înțelegeri mai profunde a acestuia. Astfel, vom avea un punct de plecare solid pentru paradigma **Orientată Obiect (OO)** pe care o vom studia începând cu laboratorul următor. Pentru a înțelege diferențele dintre cele două limbaje mai întâi ar trebui să știm care sunt asemănările,​ iar pentru asta recomandăm citirea [[poo-is-ab:​laboratoare:​01| laboratorului 1]].
  
 ==== Diferențe C/C++ ==== ==== 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 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**.
poo-is-ab/laboratoare/02.1759342613.txt.gz · Last modified: 2025/10/01 21:16 by razvan.cristea0106
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0