Differences

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

Link to this comparison view

poo:laboratoare:12 [2026/01/12 07:38]
george.tudor1906
poo:laboratoare:12 [2026/01/12 07:49] (current)
george.tudor1906
Line 1: Line 1:
  
-===== Laboratorul 12 – Generics & Collections ​=====+===== Laboratorul 12 – Genericitate. Design Patterns 2 ===== 
 + 
 +{{:​poo:​laboratoare:​arhiva12_genericitate_dp2.zip|Arhiva laborator}}
  
 === Problema 1 === === Problema 1 ===
Line 32: Line 34:
 === Problema 2 - Decorator === === Problema 2 - Decorator ===
  
-Pornind de la diagrama dataimplementati ​clasele ​si interfetele din diagrama si cele +Folosind **design pattern-ul Decorator**implementați ​clasele ​și interfețele ​necesare 
-care mai sunt necesare pentru a putea apoi sa construiti ​un obiect de tip **IceCream** +pentru a putea construi ​un obiect de tip **IceCream** ce conține două toppinguri: 
-ce contine doua toppinguri: **Chocolate** ​si **Vanilla**. ​Afisati pretul si descrierea +**Chocolate** ​și **Vanilla**. ​Afișați prețul și descrierea acestei ​înghețate.
-acestei ​inghetate (design pattern-ul Decorator).+
  
-In constructorul ​fiecarui ​topping, respectiv ​in constructorul **BasicIceCream** se va +În constructorul ​fiecărui ​topping, respectiv ​în constructorul **BasicIceCream** se va 
-afisa un mesaj prin care se specifica ​ce se adauga.+afișa ​un mesaj prin care se specifică ​ce se adaugă.
  
-Preturi: basicIceCream 0.5, ciocolata ​1.5, vanilie 2.+Prețuri: basicIceCream 0.5, ciocolată ​1.5, vanilie 2.
  
 Descriere metode: Descriere metode:
-  * **getDescription()**: ​returneaza ​elementele componente ale inghetatei pana acum (adica lista tuturor componentelor ​adaugate ​anterior plus topping-ul curent); +  * **getDescription()**: ​returnează ​elementele componente ale înghețatei până ​acum (adică ​lista tuturor componentelor ​adăugate ​anterior plus topping-ul curent); 
-  * **getPrice()**: ​returneaza ​costul curent al inghetatei ​(suma tuturor elementelor ​adaugate ​anterior + costul toppingului curent).+  * **getPrice()**: ​returnează ​costul curent al înghețatei ​(suma tuturor elementelor ​adăugate ​anterior + costul toppingului curent).
  
 <note important>​ <note important>​
-Pentru a putea adauga functionalitate ​(in cazul de fata un topping) unui obiect, +Pentru a putea adăuga funcționalitate ​(în cazul de față ​un topping) unui obiect, 
-vom avea nevoie de o referinta catre obiectul respectiv ​in decorator. +vom avea nevoie de o referință către ​obiectul respectiv ​în decorator. 
-Un con (obiect de tipul BasicIceCream) ​fara topping este considerat tot o inghetata!+Un con (obiect de tipul BasicIceCream) ​fără ​topping este considerat tot o înghețată!
 </​note>​ </​note>​
  
 <note warning> <note warning>
-Pentru a putea adauga ​topping-uri avem nevoie de un con!+Pentru a putea adăuga ​topping-uri avem nevoie de un con!
 </​note>​ </​note>​
  
Line 73: Line 74:
  
   * Metoda **removeDuplicates** primește ca parametru un obiect de tip ArrayList și transformă lista într-o mulțime, eliminând duplicatele.   * Metoda **removeDuplicates** primește ca parametru un obiect de tip ArrayList și transformă lista într-o mulțime, eliminând duplicatele.
-  * Metoda **max** are ca parametru tot un ArrayList și returnează elementul ​maximal ​din listă.+  * Metoda **max** are ca parametru tot un ArrayList și returnează elementul ​maxim din listă.
   * Metoda **binarySearch** este folosită pentru a determina poziția unei valori într-o listă ordonată, utilizând pentru aceasta algoritmul de căutare binară, detaliat în blocul de cod de mai jos.   * Metoda **binarySearch** este folosită pentru a determina poziția unei valori într-o listă ordonată, utilizând pentru aceasta algoritmul de căutare binară, detaliat în blocul de cod de mai jos.
  
 <code java> <code java>
 int BinarySearch(v,​ start, end, x) { int BinarySearch(v,​ start, end, x) {
-    // conditia ​de oprire (x nu se afla in v)+    // condiția ​de oprire (x nu se află în v)
     if (start > end)     if (start > end)
         return -1;         return -1;
Line 85: Line 86:
     int mid = (start + end) / 2;     int mid = (start + end) / 2;
  
-    // etapa stapaneste+    // etapa stăpânește
     if (v[mid] == x)     if (v[mid] == x)
         return mid;         return mid;
Line 108: Line 109:
  
 <code java> <code java>
-// afisare+// afișare
 public String toString(); public String toString();
  
Line 122: Line 123:
 === Problema 5 === === Problema 5 ===
  
-Să se definească o clasă ​generica ​ArrayMap, pentru un dicționar realizat din doi vectori+Să se definească o clasă ​generică ​ArrayMap, pentru un dicționar realizat din doi vectori
 (un vector de chei și un vector de valori asociate, obiecte din clasa Vector), care să (un vector de chei și un vector de valori asociate, obiecte din clasa Vector), care să
 poată înlocui o clasă HashMap sau TreeMap. poată înlocui o clasă HashMap sau TreeMap.
Line 135: Line 136:
 public Collection<​V>​ values(); public Collection<​V>​ values();
 public Set<​Map.Entry<​K,​ V>> entrySet(); public Set<​Map.Entry<​K,​ V>> entrySet();
-// atentie! Se va defini o clasa interna ​pentru o intrare ​in dictionar ​- Map.Entry+// atenție! Se va defini o clasă internă ​pentru o intrare ​în dicționar ​- Map.Entry
 </​code>​ </​code>​
  
-Afișați dicționarul folosind System.out.println(dictionar) ​si apoi folosind un Iterator +Afișați dicționarul folosind System.out.println(dictionar) ​și apoi folosind un Iterator 
-pentru a parcurge mulțimea ​intrarilor ​generată de metoda entrySet.+pentru a parcurge mulțimea ​intrărilor ​generată de metoda entrySet.
  
poo/laboratoare/12.1768196330.txt.gz · Last modified: 2026/01/12 07:38 by george.tudor1906
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