This is an old revision of the document!


Laboratorul 09.

Problema 1

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!

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.

//afisare
public String toString();
//adunare
public AMatrix addition(AMatrix m);

Folosiți iteratori pentru parcurgerea colecțiilor și metoda sum pentru a aduna două elemente!

Problema 3

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.

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);
}

Arhivă laborator

poo/laboratoare/09.1511332301.txt.gz · Last modified: 2017/11/22 08:31 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