Differences

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

Link to this comparison view

poo-ca-cd:laboratoare:obiecte-in-java [2025/10/15 04:22]
florian_luis.micu [Exerciții]
poo-ca-cd:laboratoare:obiecte-in-java [2025/10/15 04:36] (current)
florian_luis.micu [Metode statice]
Line 377: Line 377:
 ====Crearea obiectelor==== ====Crearea obiectelor====
  
-===Constructorii===+===Constructori===
  
 Un constructor este o metodă specială care: Un constructor este o metodă specială care:
Line 560: Line 560:
 </​note>​ </​note>​
  
-Metoda finalize() este apelată de Garbage Collector **înainte** ca obiectul să fie distrus, dar **nu se recomandă** folosirea ei, deoarece:+Metoda ​''​finalize()'' ​este apelată de Garbage Collector **înainte** ca obiectul să fie distrus, dar **nu se recomandă** folosirea ei, deoarece:
   * momentul apelului nu este garantat;   * momentul apelului nu este garantat;
   * afectează performanța;​   * afectează performanța;​
-  * în versiunile moderne de Java, finalize() este deprecated.+  * în versiunile moderne de Java, ''​finalize()'' ​este deprecated.
  
 În practică, curățarea resurselor (fișiere, conexiuni etc.) se face explicit, folosind practici recomandate pe care le vom studia în laboratoarele următoare. În practică, curățarea resurselor (fișiere, conexiuni etc.) se face explicit, folosind practici recomandate pe care le vom studia în laboratoarele următoare.
Line 749: Line 749:
 ====Proprietăți==== ​ ====Proprietăți==== ​
   ​   ​
-În secțiunile de mai sus am menționat că o clasă poate conține și **proprietăți**. O proprietate este un **câmp** (membru) căruia i se atașează **două metode** ce îi pot expune sau modifica starea. Aceste doua metode se numesc ''​getter''​ si ''​setter''​.+În secțiunile de mai sus am menționat că o clasă poate conține și **proprietăți**. O proprietate este un **câmp** (membru) căruia i se atașează **două metode** ce îi pot expune sau modifica starea. Aceste doua metode se numesc ''​getter''​ si ''​setter'' ​și sunt în general folosite pentru a **expune** un câmp privat.
   ​   ​
 <code java> ​ <code java> ​
Line 1112: Line 1112:
 <note tip> <note tip>
 Variabilele statice **pot** fi accesate în constructori,​ întrucât sunt inițializate odată cu încărcarea clasei. Variabilele statice **pot** fi accesate în constructori,​ întrucât sunt inițializate odată cu încărcarea clasei.
 +</​note>​
 +
 +
 +
 +
 +
 +====Metode statice====
 +
 +O **metodă statică** este o metodă care aparține clasei și poate fi apelată **fără a crea un obiect** al clasei, având acces doar la membri statici.
 +
 +<code java>
 +class Apple {
 +    public static final int SMALL = 0, MEDIUM = 1, LARGE = 2;
 +    ​
 +    public int size;
 +
 +    // Funcționează
 +    public static String[] getAppleSizes() {
 +       ​return new String[] { "​SMALL",​ "​MEDIUM",​ "​LARGE"​ };
 +    }
 +    ​
 +    // Eroare, "​size"​ nu este static
 +    public static int getSize() {
 +       ​return size;
 +    }
 +}
 +</​code>​
 +
 +<note important>​
 +  * Metodele statice pot accesa doar **variabile statice**, deoarece membrii statici sunt inițializați **înainte de crearea instanțelor**. Astfel, o variabilă care aparține instanței, cum este ''​size'',​ nu ar fi încă inițializată în momentul în care metoda statică ''​getSize()''​ este apelată.
 +  * În **metodele sau blocurile statice**, cuvântul cheie ''​this''​ nu poate fi folosit, deoarece el face referire la **instanța curentă a clasei**. În momentul în care codul static este executat, **nu există** încă niciun obiect creat, deci nu există nicio instanță la care ''​this''​ să se refere.
 +</​note>​
 +
 +===== =====
 +
 +<note tip>
 +  * Folosiți ''​static''​ pentru **constante**,​ **contoare**,​ **configurații globale** sau **metode utilitare** (ex. ''​Math.sqrt()''​). Puteți găsi câteva exemple concrete în secțiunea **[Nice to know]** de mai jos. 
 +  * Nu folosiți foarte des ''​static'',​ deoarece poate strica **încapsularea** ceea ce va face codul mai greu de testat.
 </​note>​ </​note>​
  
Line 1194: Line 1232:
 </​code>​ </​code>​
 </​spoiler>​ </​spoiler>​
- 
-<note tip> 
-Folosiți ''​static''​ pentru **constante**,​ **contoare**,​ **configurații globale** sau **metode utilitare** (ex. ''​Math.sqrt()''​). Nu folosiți foarte des ''​static'',​ deoarece poate strica **încapsularea** ceea ce va face codul mai greu de testat. 
-</​note>​ 
- 
- 
- 
-====Metode statice==== 
- 
-O **metodă statică** este o metodă care aparține clasei și poate fi apelată **fără a crea un obiect** al clasei, având acces doar la membri statici. 
- 
-<code java> 
-class Apple { 
-    public static final int SMALL = 0, MEDIUM = 1, LARGE = 2; 
-    ​ 
-    public int size; 
- 
-    // Funcționează 
-    public static String[] getAppleSizes() { 
-       ​return new String[] { "​SMALL",​ "​MEDIUM",​ "​LARGE"​ }; 
-    } 
-    ​ 
-    // Eroare, "​size"​ nu este static 
-    public static int getSize() { 
-       ​return size; 
-    } 
-} 
-</​code>​ 
- 
-<note tip> 
-Metodele statice pot accesa doar **variabile statice**, deoarece membrii statici sunt inițializați **înainte de crearea instanțelor**. Astfel, o variabilă care aparține instanței, cum este ''​size'',​ nu ar fi încă inițializată în momentul în care metoda statică ''​getSize()''​ este apelată. 
-</​note>​ 
- 
-<note important>​ 
-În **metodele sau blocurile statice**, cuvântul cheie ''​this''​ nu poate fi folosit, deoarece el face referire la **instanța curentă a clasei**. În momentul în care codul static este executat, **nu există** încă niciun obiect creat, deci nu există nicio instanță la care ''​this''​ să se refere. 
-</​note>​ 
  
 <​hidden>​ <​hidden>​
Line 1390: Line 1392:
   * completați metoda showData() pentru a afisa contul unei persoane sub forma: "​Titular [NUME] are in cont [SUMA] RON si o dobanda de [dobanda]."​   * completați metoda showData() pentru a afisa contul unei persoane sub forma: "​Titular [NUME] are in cont [SUMA] RON si o dobanda de [dobanda]."​
  
-===== Referințe ​=====+===== Resurse și link-uri utile =====
  
   * [[http://​docs.oracle.com/​javase/​tutorial/​java/​javaOO/​constructors.html| Constructors in Java]]   * [[http://​docs.oracle.com/​javase/​tutorial/​java/​javaOO/​constructors.html| Constructors in Java]]
poo-ca-cd/laboratoare/obiecte-in-java.1760491375.txt.gz · Last modified: 2025/10/15 04:22 by florian_luis.micu
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