Esercitazione PR2
Mercoledì 14 ottobre 2015

ISTRUZIONI E TESTI

  • Si svolgano gli esercizi proposti in una nuova directory/progetto, ricordandosi di importare una classe adeguata per l'I/O da tastiera.
  • Si verifichi di aver istallato correttamente il sistema Java, compilando ed eseguendo (eventualmente con javac e java) un semplice programma, per esempio Benvenuto.

    [1] Si consideri il tipo di dati astratto modificabile StringCollection, utilizzato per rappresentare una collezione mutabile di oggetti di tipo String.
    Tale tipo di dati ha, tra gli altri, i seguenti metodi
    • public int occurrences(String str), che restituisce il numero di occorrenze della stringa str nella collezione;
    • public int size(), che restituisce la cardinalità della collezione (il numero delle stringhe presenti);
    • public void insert(String str), che inserisce la stringa str nella collezione;
    • public int remove(String str, int num), che elimina dalla collezione al massimo num occorrenze della stringa str, e restituisce il numero degli elementi effettivamente rimossi;
    • public Vector<String> getUnique(), che restituisce gli elementi della collezione eliminando i duplicati.

    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 StringCollection.

    [2] Si definisca una implementazione del tipo di dati astratto StringCollection. Questa può alternativamente utilizzare come struttura di supporto un oggetto della classe Vector<String> o una rappresentazione del tipo
       private Vector<String> str;
       private Vector<Integer> occ;
    
    In particolare, si definiscano la funzione di astrazione e l'invariante di rappresentazione.

    Soluzione: la classe TwoVectStringCollection e la classe TestStringCollection per testarla.

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