Differences

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

Link to this comparison view

poo:laboratoare:09 [2017/11/21 22:50]
mihai.nan
poo:laboratoare:09 [2023/12/09 11:43] (current)
carmen.odubasteanu
Line 1: Line 1:
-===== Laboratorul ​09. =====+===== Laboratorul ​12. =====
  
 === Problema 1 === === Problema 1 ===
Line 27: Line 27:
  
 === Problema 2 === === Problema 2 ===
-Pornind de la clasa abstractă **//​AMatrix//​**,​ pusă la dispoziție în arhiva laboratorului,​ implementați clasa **//​IntegerMatrix//​** care moștenește această clasă abstractă și modelează un tablou bidimensional cu numere întregi. Clasa **//​AMatrix//​** moștenește clasa **//​ArrayList//​**. Astfel, matricea propriu-zisă este un obiect de tip **//​ArrayList//​** care conține elemente de tip **//​ArrayList//​**. Clasa va conține metode pentru următoarele operații: afișarea matricei ​și adunarea a două matrice.+Să se definească o clasă **__generica__** **//​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ă poată înlocui o clasă **//​HashMap//​** sau **//​TreeMap//​**. Astfel, această clasă va extinde clasa **//​AbstractMap//​**,​ suprascriind următoarele metode: 
 + 
 +<code java> 
 +public String toString();​ 
 +public V put(K, V); 
 +public V get(Object ); 
 +public Set<​K>​ keySet(); 
 +public Collection<​V>​ values(); 
 +public Set<​Map.Entry<​K,​ V>> entrySet(); // atentie! Se va defini o clasa interna pentru o intrare in dictionar - **//​Map.Entry//​** 
 +</​code>​ 
 +Afișați dicționarul folosind System.out.println(dictionar) si apoi folosind un **//​Iterator//​** pentru a parcurge mulțimea intrarilor generată de metoda **//​entrySet//​**. 
 + 
 +=== Problema 3 === 
 +Pornind de la clasa abstractă **//​AMatrix//​**,​ pusă la dispoziție în arhiva laboratorului,​ implementați clasa **//​IntegerMatrix//​** care moștenește această clasă abstractă și modelează un tablou bidimensional cu numere întregi. Clasa **//​AMatrix//​** moștenește clasa **//​ArrayList//​**. Astfel, matricea propriu-zisă este un obiect de tip **//​ArrayList//​** care conține elemente de tip **//​ArrayList//​**. Clasa va conține metode pentru următoarele operații: afișarea matriceiadunarea a două matrice, și metoda sum pentru a aduna două elemente!.
  
 <code java> <code java>
 //afisare //afisare
 public String toString(); public String toString();
 +//sum
 +public Integer sum(Integer obj1, Integer obj2) 
 //adunare //adunare
 public AMatrix addition(AMatrix m); public AMatrix addition(AMatrix m);
 </​code>​ </​code>​
  
-<note important>​Folosiți iteratori pentru parcurgerea colecțiilor și metoda ​ +<note important>​Folosiți iteratori pentru parcurgerea colecțiilor ​sau bucle for each! </​note>​ 
-sum pentru a aduna două elemente!</note>+ 
 +=== Problema 4 === 
 +Definiți clasa **//​GenericListMethods//​** care să implementeze interfața, pusă la dispoziție în arhiva laboratorului,​ **//​GenericInterface//​**. Această interfață conține operații care prelucrează o listă, cu elemente de tip **//​Comparable//​**. Metoda **//​removeDuplicates//​** primește ca parametru un obiect de tip **//​ArrayList//​** ​și transformă lista într-on mulțime, eliminând duplicatele. ​ 
 +Metoda **//max//** are ca parametru tot un **//​ArrayList//​** și returnează elementul maximal din listă.  
 +Ultima metodă conținută de interfață,​ **//​binarySearch//​**,​ este folosită ​pentru a determina poziția unei valori într-o listă ordonata, uzitând pentru aceasta algoritmul de căutare binară, detaliat în blocul de cod de mai jos. 
 + 
 +<code c> 
 +int BinarySearch(v,​ start, end, x) {  
 +    ​//conditia de oprire (x nu se afla in v) 
 +    if (start ​end)  
 +        return -1;  
 +    //etapa divide 
 +    int mid = (start + end) / 2; 
 +    //etapa stapaneste 
 +    if (v[mid] == x)  
 +        return mid; 
 +    if (v[mid] > x)  
 +        return BinarySearch(v,​ start, mid-1, x); 
 +    if (v[mid] < x)  
 +        return BinarySearch(v,​ mid+1, end, x); 
 +
 +</​code>​ 
 +{{:​poo:​laboratoare:​arhiva9.zip|Arhivă laborator}}
poo/laboratoare/09.1511297424.txt.gz · Last modified: 2017/11/21 22:50 by mihai.nan
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