User Tools

Site Tools


Problem constructing authldap
laboratoare:constructori-referinte
Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
laboratoare:constructori-referinte [2017/11/24 18:14]
Laurentiu Stamate [Resurse]
laboratoare:constructori-referinte [2019/01/06 17:19]
Laurentiu Stamate [Resurse]
Line 1: Line 1:
 = Constructori și referințe = = Constructori și referințe =
- 
-* Responsabil:​ Laurențiu Stamate 
-* Data publicării:​ 07.10.2017 
-* Data ultimei modificări:​ 07.10.2017 
- 
 == Obiective == == Obiective ==
  
Line 164: Line 159:
 == Referințe. Implicații în transferul de parametri == == Referințe. Implicații în transferul de parametri ==
   ​   ​
-După cum știți din [[laboratoare:​java-basics|laboratorul 1]], obictele ​se alocă pe ''​heap''​. Pentru ca un obiect să poată fi folosit, este necesară cunoașterea adresei lui. Această adresă, așa cum știm din limbajul C, se reține într-un **pointer**.+Obiectele ​se alocă pe ''​heap''​. Pentru ca un obiect să poată fi folosit, este necesară cunoașterea adresei lui. Această adresă, așa cum știm din limbajul C, se reține într-un **pointer**.
  
 Limbajul Java nu permite lucrul direct cu pointeri, deoarece s-a considerat că această facilitate introduce o complexitate prea mare, de care programatorul poate fi scutit. Totuși, în Java există noțiunea de **referinţe** care înlocuiesc pointerii, oferind un mecanism de gestiune transparent. ​ Limbajul Java nu permite lucrul direct cu pointeri, deoarece s-a considerat că această facilitate introduce o complexitate prea mare, de care programatorul poate fi scutit. Totuși, în Java există noțiunea de **referinţe** care înlocuiesc pointerii, oferind un mecanism de gestiune transparent. ​
Line 215: Line 210:
     public static void main(String[] args) {     public static void main(String[] args) {
         Student s = new Student("​Alice",​ 5);         Student s = new Student("​Alice",​ 5);
-        changeReference(s); ​                // 1 +        changeReference(s); ​                // ​apel (1) 
-        System.out.println(s.getName()); ​   // 1'+        System.out.println(s.getName()); ​   // "​Alice"​
  
-        changeObject(s); ​                   // 2 +        changeObject(s); ​                   // apel (2) 
-        System.out.println(s.averageGrade);​ // 2'+        System.out.println(s.averageGrade);​ // "​10"​
     }     }
 } }
 </​code>​ </​code>​
   ​   ​
-Astfel, apelul (1) nu are nici un efect în metoda ''​main''​ pentru că metoda ''​changeReference''​ are ca efect asignarea unei noi valori referinței ''​s'',​ copiată pe stivă. ​Linia (1'​) ​va afișa textul: ''​Alice''​.+Astfel, apelul (1) nu are nici un efect în metoda ''​main''​ pentru că metoda ''​changeReference''​ are ca efect asignarea unei noi valori referinței ''​s'',​ copiată pe stivă. ​Se va afișa textul: ''​Alice''​.
 {{ :​laboratoare:​constructori-referinte:​poza1.png?​600 |}}  {{ :​laboratoare:​constructori-referinte:​poza1.png?​600 |}} 
  
-Apelul (2) metodei ''​changeObject''​ are ca efect modificarea structurii interne a obiectului referit de ''​s''​ prin schimbarea valorii atributului ''​averageGrade''​. ​Linia (2'​) ​va afișa textul: ''​10''​.+Apelul (2) metodei ''​changeObject''​ are ca efect modificarea structurii interne a obiectului referit de ''​s''​ prin schimbarea valorii atributului ''​averageGrade''​. ​Se va afișa textul: ''​10''​.
 {{ :​laboratoare:​constructori-referinte:​poza2.png?​600 |}} {{ :​laboratoare:​constructori-referinte:​poza2.png?​600 |}}
  
Line 309: Line 304:
 String s1 = "​abc";​ String s1 = "​abc";​
  
-String s2 = s.toUpperCase(); ​    // ​does not change; the method returns a reference to a new object which can be accessed using s2 variable +String s2 = s1.toUpperCase(); ​    // ​s1 does not change; the method returns a reference to a new object which can be accessed using s2 variable 
-s.toUpperCase();​ // is now a reference to a new object+s1 s1.toUpperCase();​ // s1 is now a reference to a new object
 </​code>​ </​code>​
 <note tip> <note tip>
Line 440: Line 435:
  
 == Resurse == == Resurse ==
 +
 +* {{:​laboratoare:​constructori-referinte:​lab2-sol.zip|Soluție}}
 * <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​PDF laborator</​a></​html>​ * <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​PDF laborator</​a></​html>​
-* **{{:​laboratoare:​constructori-referinte:​constructori-referinte-sol.zip | Soluție}}** 
- 
- 
- 
 == Referințe == == Referințe ==
  
laboratoare/constructori-referinte.txt · Last modified: 2020/01/14 14:00 by Adriana Draghici