Differences

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

Link to this comparison view

poo-is-ab:laboratoare:03 [2025/09/23 19:58]
razvan.cristea0106
poo-is-ab:laboratoare:03 [2025/12/07 13:14] (current)
razvan.cristea0106 [Programarea Orientată pe Obiecte (POO)]
Line 29: Line 29:
  
 struct Avion struct Avion
-{  +
- int numarLocuri;​  +    int numarLocuri;​ 
- int anFabricatie;​ +    int anFabricatie;​ 
- float capacitateRezervor;​+    float capacitateRezervor;​
 }; };
  
 void afisareAvion(const Avion& avion) void afisareAvion(const Avion& avion)
 { {
- std::cout << "​Numarul de locuri din avion este: " << avion.numarLocuri << '​\n';​ +    ​std::cout << "​Numarul de locuri din avion este: " << avion.numarLocuri << '​\n';​ 
- std::cout << "Anul de fabricatie al avionului este: " << avion.anFabricatie << '​\n';​ +    std::cout << "Anul de fabricatie al avionului este: " << avion.anFabricatie << '​\n';​ 
- std::cout << "​Capacitatea rezervorului avionului este: " << avion.capacitateRezervor << " litri\n";​+    std::cout << "​Capacitatea rezervorului avionului este: " << avion.capacitateRezervor << " litri\n";​
 } }
  
 int main() int main()
 { {
- Avion avion; // in limbajul C era eroare de compilare daca nu foloseam typedef la definirea structurii +    ​Avion avion; // in limbajul C era eroare de compilare daca nu foloseam typedef la definirea structurii 
-        /* struct Avion avion; // ar fi fost declaratia corecta pentru o variabila de tip Avion in C */+    /* struct Avion avion; // ar fi fost declaratia corecta pentru o variabila de tip Avion in C */
  
- avion.numarLocuri = 230; +    ​avion.numarLocuri = 230; 
- avion.anFabricatie = 2000; +    avion.anFabricatie = 2000; 
- avion.capacitateRezervor = 755.5f;+    avion.capacitateRezervor = 755.5f;
  
- afisareAvion(avion);​+    ​afisareAvion(avion);​
  
- return 0;+    ​return 0;
 } }
 </​code>​ </​code>​
Line 70: Line 70:
 struct Avion struct Avion
 { {
- int numarLocuri;​ +    ​int numarLocuri;​ 
- int anFabricatie;​ +    int anFabricatie;​ 
- float capacitateRezervor;​+    float capacitateRezervor;​
 }; };
  
 void afisareAvion(const Avion* const avion) void afisareAvion(const Avion* const avion)
 { {
- printf("​Numarul de locuri din avion este: %d\n", avion->​numarLocuri);​ +    ​printf("​Numarul de locuri din avion este: %d\n", avion->​numarLocuri);​ 
- printf("​Anul de fabricatie al avionului este: %d\n", avion->​anFabricatie);​ +    printf("​Anul de fabricatie al avionului este: %d\n", avion->​anFabricatie);​ 
- printf("​Capacitatea rezervorului avionului este: %.2f litri\n",​ avion->​capacitateRezervor);​+    printf("​Capacitatea rezervorului avionului este: %.2f litri\n",​ avion->​capacitateRezervor);​
 } }
  
 int main() int main()
 { {
- Avion avion;+    ​Avion avion;
  
- avion.numarLocuri = 230; +    ​avion.numarLocuri = 230; 
- avion.anFabricatie = 2000; +    avion.anFabricatie = 2000; 
- avion.capacitateRezervor = 755.5f;+    avion.capacitateRezervor = 755.5f;
  
- afisareAvion(&​avion);​+    ​afisareAvion(&​avion);​
  
- return 0;+    ​return 0;
 } }
 </​code>​ </​code>​
Line 126: Line 126:
 class Brad class Brad
 { {
- int vechime; +    ​int vechime; 
- float inaltime; +    float inaltime; 
- double pret;+    double pret;
 }; };
 </​code>​ </​code>​
Line 163: Line 163:
 private: // specificatorul de acces private, nu era necesar sa il punem deoarece membrii deja erau privati private: // specificatorul de acces private, nu era necesar sa il punem deoarece membrii deja erau privati
  
- int vechime; +    ​int vechime; 
- float inaltime; +    float inaltime; 
- double pret;+    double pret;
 }; };
 </​code>​ </​code>​
Line 178: Line 178:
 private: private:
  
- int vechime; +    ​int vechime; 
- float inaltime; +    float inaltime; 
- double pret;+    double pret;
 }; };
  
 int main() int main()
 { {
- Brad brad; // obiect de tipul clasei Brad (instanta a clasei Brad)+    ​Brad brad; // obiect de tipul clasei Brad (instanta a clasei Brad)
  
- return 0;+    ​return 0;
 } }
 </​code>​ </​code>​
  
-<note important>​Un obiect nu este altceva decât un reprezentant al clasei, care respectă structura acesteia, adică deține toate proprietățile pe care clasa le pune la dispoziție. Pentru a înțelege ​puteți ​face analogia cu oamenii. Toți oamenii au plămâni, aceasta fiind o caracteristică comună speciei umane. Diferențele pot să apară la starea de sănătate a plămânilor,​ deoarece, în general, persoanele mai tinere au plămâni mai sănătoși comparativ cu cei ai persoanelor vârstnice. Starea de sănătate a plămânilor poate varia și în funcție de factori precum stilul de viață, expunerea la poluare sau fumat.</​note>​+<note important>​Un ​**obiect** nu este altceva decât un **reprezentant** al clasei, care respectă structura acesteia, adică deține ​**toate proprietățile** pe care clasa le pune la dispoziție. Pentru a înțelege ​mai bine putem face analogia cu oamenii. Toți oamenii au **plămâni**, aceasta fiind o **caracteristică comună** speciei umane. Diferențele pot să apară la **starea de sănătate** a plămânilor,​ deoarece, în general, persoanele mai **tinere** au plămâni ​**mai sănătoși** comparativ cu cei ai persoanelor ​**vârstnice**. Starea de sănătate a plămânilor poate varia și în funcție de **factori** precum ​**stilul de viață****expunerea la poluare** sau **fumat**.</​note>​
  
 Dacă vom dori să accesăm membrii clasei **Brad** direct din funcția **main** vom primi o eroare de compilare, deoarece membrii sunt **inaccesibili**. Dacă vom dori să accesăm membrii clasei **Brad** direct din funcția **main** vom primi o eroare de compilare, deoarece membrii sunt **inaccesibili**.
Line 200: Line 200:
 class Brad class Brad
 { {
- int vechime; +    ​int vechime; 
- float inaltime; +    float inaltime; 
- double pret;+    double pret;
 }; };
  
 int main() int main()
 { {
- Brad brad;+    ​Brad brad;
  
- brad.vechime = 2; // eroare de compilare, membrul vechime este privat +    ​brad.vechime = 2; // eroare de compilare, membrul vechime este privat 
- brad.inaltime = 5.25f; // gresit, membrul inaltime este inaccesibil  +    brad.inaltime = 5.25f; // gresit, membrul inaltime este inaccesibil  
- brad.pret = 299.99; // membrul pret este marcat ca private+    brad.pret = 299.99; // membrul pret este marcat ca private
  
- return 0;+    ​return 0;
 } }
 </​code>​ </​code>​
Line 226: Line 226:
 public: // in acest moment cei 3 membri ai clasei sunt vizibili in exteriorul acesteia public: // in acest moment cei 3 membri ai clasei sunt vizibili in exteriorul acesteia
  
- int vechime; +    ​int vechime; 
- float inaltime; +    float inaltime; 
- double pret;+    double pret;
 }; };
  
 int main() int main()
 { {
- Brad brad;+    ​Brad brad;
  
- brad.vechime = 2; +    ​brad.vechime = 2; 
- brad.inaltime = 5.25f; +    brad.inaltime = 5.25f; 
- brad.pret = 299.99;+    brad.pret = 299.99;
  
- return 0;+    ​return 0;
 } }
 </​code>​ </​code>​
  
-<note warning>​Acest lucru însă **nu** este o variantă indicată, deoarece **am încălcat principiul încapsulării datelor** și în plus, acum oricine poate modifica din exterior membrii clasei. După cum se poate observa, clasa **Brad** scrisă în această manieră se comportă exact ca o structură. Diferența între cele 2 (struct și class) constă în faptul că într-o structură totul este marcat cu **public** by default în timp ce o clasă are membrii by default marcați cu **private**. Vom menționa mai târziu cum putem respecta principiul încaspulării datelor pentru clasa **Brad** când vom discuta despre funcții membre (metode).</​note>​+<note warning>​Acest lucru însă **nu** este o variantă indicată, deoarece **am încălcat principiul încapsulării datelor** și în plus, acum oricine poate modifica din exterior membrii clasei. După cum se poate observa, clasa **Brad** scrisă în această manieră se comportă exact ca o **structură**. Diferența între cele 2 (**struct** și **class**) constă în faptul că într-o structură ​**totul** este marcat cu **public** by default în timp ce o clasă are membrii by default marcați cu **private**. Vom menționa mai târziu cum putem respecta principiul încaspulării datelor pentru clasa **Brad** când vom discuta despre ​**funcții membre** (**metode**).</​note>​
  
 == Moștenirea == == Moștenirea ==
Line 249: Line 249:
 Moștenirea (**Inheritance**) permite unei clase să **preia** proprietățile și comportamentele unei alte clase, oferind astfel posibilitatea reutilizării codului. În același timp, **clasa derivată (clasa moștenitoare)** poate adăuga funcționalități specifice pe care clasa de bază nu le are, extinzând astfel comportamentul acesteia și adaptându-l la nevoile proprii. ​ Moștenirea (**Inheritance**) permite unei clase să **preia** proprietățile și comportamentele unei alte clase, oferind astfel posibilitatea reutilizării codului. În același timp, **clasa derivată (clasa moștenitoare)** poate adăuga funcționalități specifice pe care clasa de bază nu le are, extinzând astfel comportamentul acesteia și adaptându-l la nevoile proprii. ​
  
-<​note>​Ca și exemplu putem lua omul care este un mamifer. Omul la fel ca toate mamiferele are plămâni, dar spre deosebire de alte animale din categoria mamiferelor acesta are o postură bipedă. Vom detalia mai multe despre moștenire peste câteva laboratoare și tot atunci vom vorbi mai mult despre specificatorul de acces **protected**.</​note>​+<​note>​Ca și exemplu putem lua ***omul** care este un **mamifer**. Omul la fel ca toate mamiferele are **plămâni**, dar spre deosebire de alte animale din categoria mamiferelor acesta are o **postură bipedă**. Vom detalia mai multe despre ​**moștenire** peste câteva laboratoare și tot atunci vom vorbi mai mult despre specificatorul de acces **protected**.</​note>​
  
 == Polimorfismul == == Polimorfismul ==
Line 264: Line 264:
 void interschimbare(int* a, int* b) void interschimbare(int* a, int* b)
 { {
- if (a == nullptr || b == nullptr) +    ​if (a == nullptr || b == nullptr) 
-+    
- return; +        return; 
- }+    }
  
- int auxiliar = *a; +    ​int auxiliar = *a; 
- *a = *b; +    *a = *b; 
- *b = auxiliar;+    *b = auxiliar;
 } }
  
 void interschimbare(int&​ a, int& b) void interschimbare(int&​ a, int& b)
 { {
- int auxiliar = a; +    ​int auxiliar = a; 
- a = b; +    a = b; 
- b = auxiliar;+    b = auxiliar;
 } }
  
 int main() int main()
 { {
- int x = 22; +    ​int x = 22; 
- int y = 8;+    int y = 8;
  
- interschimbare(&​x,​ &y);+    ​interschimbare(&​x,​ &y);
  
- std::cout << "​Valoarea lui x este: " << x << '​\n';​ +    ​std::cout << "​Valoarea lui x este: " << x << '​\n';​ 
- std::cout << "​Valoarea lui y este: " << y << '​\n';​+    std::cout << "​Valoarea lui y este: " << y << '​\n';​
  
- interschimbare(x,​ y);+    ​interschimbare(x,​ y);
  
- std::cout << "​Valoarea lui x este: " << x << '​\n';​ +    ​std::cout << "​Valoarea lui x este: " << x << '​\n';​ 
- std::cout << "​Valoarea lui y este: " << y << '​\n';​+    std::cout << "​Valoarea lui y este: " << y << '​\n';​
  
- return 0;+    ​return 0;
 } }
 </​code>​ </​code>​
Line 310: Line 310:
 == Constructorii == == Constructorii ==
  
-Așa cum le spune și numele această categorie de metode se ocupă de **construirea (inițializarea) obiectelor**.+Așa cum le spune și numele această categorie de metode se ocupă de **construirea (inițializarea) obiectelor ​(instanțelor clasei)**.
  
 Constructorii au o serie de trăsături care îi fac pe aceștia foarte ușor de recunoscut după cum urmează: Constructorii au o serie de trăsături care îi fac pe aceștia foarte ușor de recunoscut după cum urmează:
Line 325: Line 325:
 class Brad class Brad
 { {
- int vechime; +    ​int vechime; 
- float inaltime; +    float inaltime; 
- double pret;+    double pret;
  
 public: public:
  
- Brad() +    ​Brad() 
-+    
- vechime = 0; +        vechime = 0; 
- inaltime = 0.0f; +        inaltime = 0.0f; 
- pret = 0.0; +        pret = 0.0; 
- }+    }
 }; };
  
 int main() int main()
 { {
- Brad brad; // echivalent cu a scrie direct Brad brad = Brad();+    ​Brad brad; // echivalent cu a scrie direct Brad brad = Brad();
  
- return 0;+    ​return 0;
 } }
 </​code>​ </​code>​
Line 356: Line 356:
 class Brad // declaratia clasei se va scrie intr-un fisier cu extensia .h class Brad // declaratia clasei se va scrie intr-un fisier cu extensia .h
 { {
- int vechime; +    ​int vechime; 
- float inaltime; +    float inaltime; 
- double pret;+    double pret;
  
 public: public:
  
- Brad();+    ​Brad();
 }; };
  
 Brad::​Brad() // aceasta bucata de cod va exista intr-un fisier cu extensia .cpp Brad::​Brad() // aceasta bucata de cod va exista intr-un fisier cu extensia .cpp
 { {
- vechime = 0; +    ​vechime = 0; 
- inaltime = 0.0f; +    inaltime = 0.0f; 
- pret = 0.0;+    pret = 0.0;
 } }
  
 int main() int main()
 { {
- Brad brad; // echivalent cu a scrie direct Brad brad = Brad();+    ​Brad brad; // echivalent cu a scrie direct Brad brad = Brad();
  
- return 0;+    ​return 0;
 } }
 </​code>​ </​code>​
Line 389: Line 389:
 class Brad class Brad
 { {
- int vechime; +    ​int vechime; 
- float inaltime; +    float inaltime; 
- double pret;+    double pret;
  
 public: public:
  
- // Brad();+    ​// Brad();
  
- Brad(const float& inaltime); // constructor cu un parametru+    ​Brad(const float& inaltime); // constructor cu un parametru
  
- Brad(const int& vechime, const float& inaltime, const double& pret);+    ​Brad(const int& vechime, const float& inaltime, const double& pret); ​// constructor cu trei parametri
 }; };
  
 int main() int main()
 { {
- Brad brad; // eroare de compilare, nu exista constructor default+    ​Brad brad; // eroare de compilare, nu exista constructor default
  
- return 0;+    ​return 0;
 } }
 </​code>​ </​code>​
Line 419: Line 419:
 Brad::​Brad(const float& inaltime) Brad::​Brad(const float& inaltime)
 { {
- vechime = 0; +    ​vechime = 0; 
- inaltime = inaltime; // eroare de compilare +    inaltime = inaltime; // eroare de compilare 
- pret = 0.0;+    pret = 0.0;
 } }
 </​code>​ </​code>​
Line 433: Line 433:
 Pentru a putea soluționa problema de mai sus trebuie să introducem un nou keyword specific **POO** pe care îl vom întâlni în aproape toate limbajele de programare care suportă paradigma **OO** și anume cuvântul cheie **this**. Pentru a putea soluționa problema de mai sus trebuie să introducem un nou keyword specific **POO** pe care îl vom întâlni în aproape toate limbajele de programare care suportă paradigma **OO** și anume cuvântul cheie **this**.
  
-În C++ **this** este un **pointer** pe care **toate funcțiile membre** îl primesc ca parametru pe **prima poziție**. ​În C++ acest pointer **nu** este vizibil, **dar asta nu înseamnă că nu există**, în lista de parametri a metodei, dar în limbajul Python acesta este prezent și poartă denumirea de **self** și obligatoriu trebuie pus de către **programator** pe **prima poziție** în lista de parametri a fiecărei **funcții membre** dintr-o clasă.+În C++ **this** este un **pointer** pe care **toate funcțiile membre** îl primesc ca parametru pe **prima poziție**. ​Deși poate părea neclar în C++ acest pointer **nu** este vizibil, **dar asta nu înseamnă că nu există**, în lista de parametri a metodei, dar în limbajul Python acesta este prezent și poartă denumirea de **self** și obligatoriu trebuie pus de către **programator** pe **prima poziție** în lista de parametri a fiecărei **funcții membre** dintr-o clasă.
  
 Pointerul **this** indică **adresa obiectului curent** și are rolul de a **rezolva** problemele de ambiguitate între **membrii clasei** și **parametrii metodelor**. Acesta este utilizat pentru a **diferenția** în mod clar variabilele locale de câmpurile obiectului, permițând atribuirea **corectă** a valorilor parametrilor metodelor **membrilor interni** ai obiectului. Pointerul **this** indică **adresa obiectului curent** și are rolul de a **rezolva** problemele de ambiguitate între **membrii clasei** și **parametrii metodelor**. Acesta este utilizat pentru a **diferenția** în mod clar variabilele locale de câmpurile obiectului, permițând atribuirea **corectă** a valorilor parametrilor metodelor **membrilor interni** ai obiectului.
Line 440: Line 440:
  
 <code cpp> <code cpp>
-// Brad::​Brad(Brad* this, const float& inaltime) -> asa arata de fapt aceasta functie la compilare+// Brad::​Brad(Brad* this, const float& inaltime) -> asa arata de fapt aceasta ​metoda (functie ​membra) ​la compilare
 Brad::​Brad(const float& inaltime) Brad::​Brad(const float& inaltime)
 { {
- vechime = 0; // nu este nevoie de this deoarece compilatorul stie ca este vorba despre campul vechime al obiectului curent +    ​vechime = 0; // nu este nevoie de this deoarece compilatorul stie ca este vorba despre campul vechime al obiectului curent 
- this->​inaltime = inaltime; +    this->​inaltime = inaltime; 
- pret = 0.0; // aceeasi explicatie ca la vechime+    pret = 0.0; // aceeasi explicatie ca la vechime
 } }
 </​code>​ </​code>​
Line 458: Line 458:
 class Brad class Brad
 { {
- int vechime; +    ​int vechime; 
- float inaltime; +    float inaltime; 
- double pret;+    double pret;
  
 public: public:
  
- Brad(); // constructor default+    ​Brad(); // constructor default
  
- Brad(const float& inaltime); // constructor cu un parametru+    ​Brad(const float& inaltime); // constructor cu un parametru
  
- Brad(const int& vechime, const float& inaltime, const double& pret); // constructor cu 3 parametri+    ​Brad(const int& vechime, const float& inaltime, const double& pret); // constructor cu 3 parametri
 }; };
  
-// Brad::​Brad(Brad* this) - asa arata la compilare+// Brad::​Brad(Brad* this) -asa arata la compilare
 Brad::​Brad() Brad::​Brad()
 { {
- vechime = 0; // nu este nevoie de this, dar nu este gresit nici daca scriem this->​vechime = 0; +    ​vechime = 0; // nu este nevoie de this, dar nu este gresit nici daca scriem this->​vechime = 0; 
- inaltime = 0.0f; +    inaltime = 0.0f; 
- pret = 0.0;+    pret = 0.0;
 } }
  
-// Brad::​Brad(Brad* this, const float& inaltime) - asa arata la compilare+// Brad::​Brad(Brad* this, const float& inaltime) -asa arata la compilare
 Brad::​Brad(const float& inaltime) Brad::​Brad(const float& inaltime)
 { {
- vechime = 0; +    ​vechime = 0; 
- this->​inaltime = inaltime; +    this->​inaltime = inaltime; 
- pret = 0.0;+    pret = 0.0;
 } }
  
-// Brad::​Brad(Brad* this, const int& vechime, const float& inaltime, const double& pret) - asa arata la compilare+// Brad::​Brad(Brad* this, const int& vechime, const float& inaltime, const double& pret) -asa arata la compilare
 Brad::​Brad(const int& vechime, const float& inaltime, const double& pret) Brad::​Brad(const int& vechime, const float& inaltime, const double& pret)
 { {
- this->​pret = pret; +    ​this->​pret = pret; 
- this->​vechime = vechime; +    this->​vechime = vechime; 
- this->​inaltime = inaltime;+    this->​inaltime = inaltime;
 } }
  
 int main() int main()
 { {
- Brad brad; // se apeleaza constructorul default +    ​Brad brad; // se apeleaza constructorul default 
- Brad bradut(4.75f);​ // se apeleaza constructorul cu un parametru (echivalent cu a scrie Brad bradut = Brad(4.75f);​) +    Brad bradut(4.75f);​ // se apeleaza constructorul cu un parametru (echivalent cu a scrie Brad bradut = Brad(4.75f);​) 
- Brad b(2, 2.25f, 399.99); // se apeleaza constructorul cu un parametru (echivalent cu a scrie Brad b = Brad(2, 2.25f, 399.99);)+    Brad b(2, 2.25f, 399.99); // se apeleaza constructorul cu un parametru (echivalent cu a scrie Brad b = Brad(2, 2.25f, 399.99);)
  
- return 0;+    ​return 0;
 } }
 </​code>​ </​code>​
Line 516: Line 516:
 class Brad class Brad
 { {
- int vechime; +    ​int vechime; 
- float inaltime; +    float inaltime; 
- double pret;+    double pret;
  
 public: public:
  
- Brad(); +    ​Brad(); 
- Brad(const int& vechime, const float& inaltime, const double& pret);+    Brad(const int& vechime, const float& inaltime, const double& pret);
  
- int getVechime() const; // metoda la compilare arata asaint getVechime(const Brad* this); +    ​int getVechime() const; // metoda la compilare arata asa -> int getVechime(const Brad* this); 
- float getInaltime() const; +    float getInaltime() const; 
- double getPret() const;+    double getPret() const;
  
- void setVechime(const int& vechime); // metoda la compilare arata asavoid setVechime(Brad* this, const int& vechime); +    ​void setVechime(const int& vechime); // metoda la compilare arata asa -> void setVechime(Brad* this, const int& vechime); 
- void setInaltime(const float& inaltime);​ +    void setInaltime(const float& inaltime);​ 
- void setPret(const double& pret);+    void setPret(const double& pret);
 }; };
 </​code>​ </​code>​
Line 540: Line 540:
 Brad::​Brad() Brad::​Brad()
 { {
- vechime = 0; +    ​vechime = 0; 
- inaltime = 0.0f; +    inaltime = 0.0f; 
- pret = 0.0;+    pret = 0.0;
 } }
  
 Brad::​Brad(const int& vechime, const float& inaltime, const double& pret) Brad::​Brad(const int& vechime, const float& inaltime, const double& pret)
 { {
- this->​pret = pret; +    ​this->​pret = pret; 
- this->​vechime = vechime; +    this->​vechime = vechime; 
- this->​inaltime = inaltime;+    this->​inaltime = inaltime;
 } }
  
 int Brad::​getVechime() const // acest const este adresat pointerului this (continutul de la adresa spre care pointeaza nu poate fi modificat) int Brad::​getVechime() const // acest const este adresat pointerului this (continutul de la adresa spre care pointeaza nu poate fi modificat)
 { {
- // this->​vechime = 5; // imposibil din cauza const-ului din semnatura functiei+    ​// this->​vechime = 5; // imposibil din cauza const-ului din semnatura functiei
  
- return vechime; // era corect si daca scriam return this->​vechime;​+    ​return vechime; // era corect si daca scriam return this->​vechime;​
 } }
  
 float Brad::​getInaltime() const float Brad::​getInaltime() const
 { {
- return inaltime;+    ​return inaltime;
 } }
  
 void Brad::​setVechime(const int& vechime) void Brad::​setVechime(const int& vechime)
 { {
- if (vechime <= 0) // verificam daca valoarea primita ca parametru este una valida +    ​if (vechime <= 0) // verificam daca valoarea primita ca parametru este una valida 
-+    
- return; +        return; 
- }+    }
  
- this->​vechime = vechime; // trebuie folosit this deoarece parametrul are acelasi nume ca si campul clasei+    ​this->​vechime = vechime; // trebuie folosit this deoarece parametrul are acelasi nume ca si campul clasei
 } }
  
 void Brad::​setInaltime(const float& inaltime) void Brad::​setInaltime(const float& inaltime)
 { {
- if (inaltime <= 0) +    ​if (inaltime <= 0) 
-+    
- return; +        return; 
- }+    }
  
- this->​inaltime = inaltime;+    ​this->​inaltime = inaltime;
 } }
  
 int main() int main()
 { {
- Brad brad; // se apeleaza constructorul default+    ​Brad brad; // se apeleaza constructorul default
  
- brad.setVechime(3);​ +    ​brad.setVechime(3);​ 
- brad.setInaltime(5.5f);​+    brad.setInaltime(5.5f);​
  
- std::cout << "​Vechimea bradului este: " << brad.getVechime() << " ani\n";​ +    ​std::cout << "​Vechimea bradului este: " << brad.getVechime() << " ani\n";​ 
- std::cout << "​Inaltimea bradului este: " << brad.getInaltime() << " metri\n";​+    std::cout << "​Inaltimea bradului este: " << brad.getInaltime() << " metri\n";​
  
- return 0;+    ​return 0;
 } }
 </​code>​ </​code>​
poo-is-ab/laboratoare/03.1758646726.txt.gz · Last modified: 2025/09/23 19:58 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