This shows you the differences between two versions of the page.
poo:laboratoare:09 [2017/11/23 12:54] 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 === | ||
- | Să se definească o clasă abstractă **//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: | + | 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> | <code java> | ||
public String toString(); | public String toString(); | ||
public V put(K, V); | public V put(K, V); | ||
- | public V get(Object); | + | public V get(Object ); |
public Set<K> keySet(); | public Set<K> keySet(); | ||
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//** |
</code> | </code> | ||
- | Afișați dicționarul folosind un **//Iterator//** pentru a parcurge mulțimea cheilor generată de metoda **//keySet//**. | + | 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 === | === 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 matricei și adunarea a două matrice. | + | 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, adunarea 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 === | === Problema 4 === | ||
- | Definiți clasa **//GenericList//** 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 în 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ă, uzitând pentru aceasta algoritmul de căutare binară, detaliat în blocul de cod de mai jos. | + | 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> | <code c> | ||
Line 71: | Line 74: | ||
} | } | ||
</code> | </code> | ||
- | {{:poo:laboratoare:lab9.zip|Arhivă laborator}} | + | {{:poo:laboratoare:arhiva9.zip|Arhivă laborator}} |