This is an old revision of the document!
Pornind de la codul de mai jos, asigurați faptul că se va apela codul aferent tipului dinamic al parametrului, definind clasele Hero, Warrior, Ninja, Rogue și StormFire, în mod minimal!
public class Binding { public static void main(String args[]) { Hero h1 = new Warrior(), h2 = new Ninja(); Hero h3 = new Rogue(); BadLuck bl = new StormFire(); bl.execute(h1); bl.execute(h2); bl.execute(h3); } } abstract class BadLuck { abstract void execute(Hero h); abstract void execute(Warrior w); abstract void execute(Ninja n); abstract void execute(Rogue r); }
Clasele Hero și BadLuck sunt clase abstracte!
Folosind design pattern-ul Decorator, implementați clasele și interfețele necesare pentru a putea construi un obiect de tip IceCream ce conține două toppinguri: Chocolate și Vanilla. Afișați prețul și descrierea acestei înghețate.
În constructorul fiecărui topping, respectiv în constructorul BasicIceCream se va afișa un mesaj prin care se specifică ce se adaugă.
Prețuri: basicIceCream 0.5, ciocolată 1.5, vanilie 2.
Descriere metode:
Exemplu output:
Adding cone Adding choco Adding vanilla Ingrediente: cone, chocolate, vanilla Cost: 4.0
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.
int BinarySearch(v, start, end, x) { // condiția de oprire (x nu se află în v) if (start > end) return -1; // etapa divide int mid = (start + end) / 2; // etapa stăpânește 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); }
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!
// afișare public String toString(); // sum public Integer sum(Integer obj1, Integer obj2); // adunare public AMatrix addition(AMatrix m);
Folosiți iteratori pentru parcurgerea colecțiilor sau bucle for each!
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ă poată înlocui o clasă HashMap sau TreeMap.
Astfel, această clasă va extinde clasa AbstractMap, suprascriind următoarele metode:
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(); // atenție! Se va defini o clasă internă pentru o intrare în dicționar - Map.Entry
Afișați dicționarul folosind System.out.println(dictionar) și apoi folosind un Iterator pentru a parcurge mulțimea intrărilor generată de metoda entrySet.