Esercitazione PR2
Giovedì 25 ottobre 2018

ISTRUZIONI E TESTI


    [1] Si consideri il tipo di dati astratto modificabile IndexedCollection<E>, utilizzata per rappresentare una collezione di elementi generici (non null) di tipo E caratterizzati da un indice univoco.
    Tale tipo di dati ha, tra gli altri, i seguenti metodi
    • public void insertAt(E elem, int p), che inserisce l'elemento elem nella collezione alla posizione p, spostando l'elemento contenuto in precedenza in una posizione libera;
    • public E get(int p), che restituisce l'elemento associato all'indice p nella collezione;
    • public int indexOf(E elem), che restituisce la posizione del più grande indice associato all'elemento elem nella collezione, e -1 se elem non appartiene alla collezione.

    Si completi la specifica del tipo di dati astratto, includendo una overview con la descrizione di un'istanza tipica e fornendo la specifica completa dei metodi, comprese le eventuali eccezioni lanciate.

    Soluzione: la classe IndexedCollection<E>.

    [2] Si definisca la classe public ArrayIndexedCollection<E> che implementa il tipo di dati astratto IndexedCollection<E>.
    Questa deve utilizzare una rappresentazione del tipo
       private E[] data;
    
    In particolare, si definiscano la funzione di astrazione e l'invariante di rappresentazione.

    Soluzione: la classe ArrayIndexedCollection<E>.

    [3] Si dimostri la correttezza dell'implementazione proposta.