Differences

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

Link to this comparison view

poo-is-ab:laboratoare:06 [2025/11/01 12:06]
razvan.cristea0106 [Obiective Specifice]
poo-is-ab:laboratoare:06 [2025/11/03 21:02] (current)
razvan.cristea0106 [Moștenirea între două clase]
Line 21: Line 21:
 Așa cum am menționat anterior, **moștenirea** este un principiu fundamental al **POO** care permite unei **clase derivate** să preia atât **proprietățile (atributele)** cât și **comportamentele (funcțiile membre)** unei **clase părinte**. Prin acest mecanism, **clasa derivată** poate să extindă funcționalitatea moștenită prin adăugarea de noi atribute și metode sau prin redefinirea celor existente. Scopul principal al **moștenirii** este de a promova **reutilizarea codului** și de a permite o **extensie** naturală a funcționalităților inițiale, astfel încât să se creeze o structură mai **flexibilă** și mai **ușor de întreținut** în cadrul aplicațiilor. Așa cum am menționat anterior, **moștenirea** este un principiu fundamental al **POO** care permite unei **clase derivate** să preia atât **proprietățile (atributele)** cât și **comportamentele (funcțiile membre)** unei **clase părinte**. Prin acest mecanism, **clasa derivată** poate să extindă funcționalitatea moștenită prin adăugarea de noi atribute și metode sau prin redefinirea celor existente. Scopul principal al **moștenirii** este de a promova **reutilizarea codului** și de a permite o **extensie** naturală a funcționalităților inițiale, astfel încât să se creeze o structură mai **flexibilă** și mai **ușor de întreținut** în cadrul aplicațiilor.
  
-Înainte de a explica moștenirea între două clase vom face o scurtă ​recapitulare ​noțiunilor deja învățate ​în cadrul laboratoarelor anterioare. Pentru acest laborator propunem clasa **Locuinta** care are ca și membri **pret (de tip float)** și **adresa (șir de caractere alocat dinamic)**.+Înainte de a explica moștenirea între două clase vom face o scurtă ​prezentare ​modului ​în care trebuie să gestionăm mai multe fișiere header într-un proiect. Pentru acest laborator propunem clasa **Locuinta** care are ca și membri **pret (de tip float)** și **adresa (șir de caractere alocat dinamic)**.
  
 <code cpp> <code cpp>
Line 53: Line 53:
 <​note>​Pe prima linie a **fișierului header** în care este definită clasa **Locuinta**,​ putem observa utilizarea directivei **''#​pragma once''​**. Aceasta este o instrucțiune specifică compilatorului care indică faptul că fișierul respectiv trebuie inclus și compilat o **singură dată**, chiar dacă este referit în mod repetat în alte fișiere prin intermediul directivelor **''#​include''​**. Astfel, se previn **multiplele incluziuni** ale aceluiași fișier header, care ar putea duce la erori de compilare, cum ar fi redefinirea claselor sau funcțiilor. Directiva **''#​pragma once''​** este o alternativă modernă și mai simplă la gardienii clasici ai fișierelor header, adică acele secvențe de cod cu **''#​ifndef''​**,​ **''#​define''​** și **''#​endif''​** care au același scop.</​note>​ <​note>​Pe prima linie a **fișierului header** în care este definită clasa **Locuinta**,​ putem observa utilizarea directivei **''#​pragma once''​**. Aceasta este o instrucțiune specifică compilatorului care indică faptul că fișierul respectiv trebuie inclus și compilat o **singură dată**, chiar dacă este referit în mod repetat în alte fișiere prin intermediul directivelor **''#​include''​**. Astfel, se previn **multiplele incluziuni** ale aceluiași fișier header, care ar putea duce la erori de compilare, cum ar fi redefinirea claselor sau funcțiilor. Directiva **''#​pragma once''​** este o alternativă modernă și mai simplă la gardienii clasici ai fișierelor header, adică acele secvențe de cod cu **''#​ifndef''​**,​ **''#​define''​** și **''#​endif''​** care au același scop.</​note>​
  
-Dacă voiam să folosim varianta tradițională de scriere a unui fișier header am fi procedat ​în maniera următoare.+Dacă am dori să folosim varianta tradițională de scriere a unui fișier header, astfel încât acesta să fie inclus o singură dată, ​am putea proceda ​în maniera următoare.
  
 <code cpp> <code cpp>
Line 290: Line 290:
 { {
     operator<<​(out,​ (Locuinta&​)apartament);​ // chemam operatorul << din clasa parinte     operator<<​(out,​ (Locuinta&​)apartament);​ // chemam operatorul << din clasa parinte
-    /*out << (Locuinta&​)apartament); // o alta forma de a chema operatorul << din clasa parinte*/+    /*out << (Locuinta&​)apartament;​ // o alta forma de a chema operatorul << din clasa parinte*/
  
     out << "​Numarul de camere din apartament este: " << apartament.numarCamere << " ron\n";​     out << "​Numarul de camere din apartament este: " << apartament.numarCamere << " ron\n";​
poo-is-ab/laboratoare/06.1761991586.txt.gz · Last modified: 2025/11/01 12:06 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