Differences

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

Link to this comparison view

poo-is-ab:laboratoare:03 [2024/10/25 10:55]
razvan.cristea0106 [Introducere]
poo-is-ab:laboratoare:03 [2025/01/19 22:28] (current)
razvan.cristea0106
Line 17: Line 17:
 În cadrul laboratorului anterior ne-am axat pe scrierea corectă a unei clase respectând **principiul încapsulării datelor**. În acest laborator atenția ne este îndreptată tot asupra modului în care o clasă este scrisă în așa fel încât să respecte principiile **OOP**, dar vom introduce noi tipuri de membri și de asemenea vom prezenta câteva din funcțiile membre care sunt **specifice** clasei. În cadrul laboratorului anterior ne-am axat pe scrierea corectă a unei clase respectând **principiul încapsulării datelor**. În acest laborator atenția ne este îndreptată tot asupra modului în care o clasă este scrisă în așa fel încât să respecte principiile **OOP**, dar vom introduce noi tipuri de membri și de asemenea vom prezenta câteva din funcțiile membre care sunt **specifice** clasei.
  
-Pentru a înțelege despre ce vom vorbi pe parcursul laboratorului propunem ca și exemplu clasa **Conifer**,​ căreia îi vom adăuga noutățile rând pe rând. De asemenea, pentru această clasă vom pune la dispoziție **constructori** și accesori de tip **get** și **set**.+Pentru a înțelege despre ce vom vorbi pe parcursul laboratorului propunem ca și exemplu clasa **Conifer**,​ căreia îi vom adăuga noutățile rând pe rând. De asemenea, pentru această clasă vom pune la dispoziție **constructori** și accesori de tip **get** și **set** ​pentru fiecare membru.
  
 <code cpp> <code cpp>
Line 431: Line 431:
 </​code>​ </​code>​
  
-<note warning>​Implementarea anterioară a **operatorului de asignare** are o vulnerabilitate și anume **nu** tratează situația în care obiectul este atribuit **sieși**. Astfel pot apărea probleme cu privire la eliberarea memoriei sau coruperea datelor. Pentru a putea avea o asignare sigură trebuie să facem verificarea de **auto-asignare** care garantează că **operatorul =** va funcționa corect în toate situațiile.</​note>​+<note warning>​Implementarea anterioară a **operatorului de asignare** are o vulnerabilitate și anume **nu** tratează situația în care obiectul este atribuit **sieși**. Astfel pot apărea probleme cu privire la eliberarea memoriei sau coruperea datelor. Pentru a putea avea o asignare sigură ​**trebuie** să facem verificarea de **auto-asignare** care garantează că **operatorul =** va funcționa corect în toate situațiile.</​note>​
  
 <code cpp> <code cpp>
Line 568: Line 568:
 </​code>​ </​code>​
  
-Deși membrul static **numarConifere** este privat noi ne propunem ​cumva să avem accest ​la el. Soluția este să implementăm un **getter** pentru acesta.+Deși membrul static **numarConifere** este privat noi totuși ​ne propunem să avem cumva acces la el. Soluția ​cea mai simplă ​este să implementăm un **getter** pentru acesta, astfel încât să respectăm și **principiul încapsulării datelor**.
  
 === Funcții statice === === Funcții statice ===
Line 574: Line 574:
 La fel ca variabila statică, **funcția statică** există pe întreaga durată de viață a programului. În **POO** o **funcție statică** la nivel de clasă este foarte asemănătoare cu o **metodă**. Totuși o metodă primește ca parametru pe prima poziție în lista de parametri **pointerul this**. În C++ chiar dacă acest parametru **nu** este vizibil în lista de parametri, la compilare există (acest procedeu ne este ascuns, dar în spate compilatorul adaugă acest parametru la toate **funcțiile membre**). La fel ca variabila statică, **funcția statică** există pe întreaga durată de viață a programului. În **POO** o **funcție statică** la nivel de clasă este foarte asemănătoare cu o **metodă**. Totuși o metodă primește ca parametru pe prima poziție în lista de parametri **pointerul this**. În C++ chiar dacă acest parametru **nu** este vizibil în lista de parametri, la compilare există (acest procedeu ne este ascuns, dar în spate compilatorul adaugă acest parametru la toate **funcțiile membre**).
  
-<note important>​**O ​**funcție statică** la nivel de clasă **nu** primește **pointerul this** ca parametru. Îi spunem **funcție statică** și **nu** metodă statică din acest motiv.**</​note>​+<note important>​**O funcție statică** la nivel de clasă **nu** primește **pointerul this** ca parametru. Îi spunem **funcție statică** și nu **metodă statică** din acest motiv.</​note>​
  
 În exemplul de mai jos am declarat un **getter** pentru a obține numărul de conifere. În exemplul de mai jos am declarat un **getter** pentru a obține numărul de conifere.
poo-is-ab/laboratoare/03.1729842901.txt.gz · Last modified: 2024/10/25 10:55 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