Primo Compitino 2007
Terzo Esercizio Implementare il tipo di dato astratto Table un oggetto di tipo Table ha due colonne e un numero variabile di righe. Gli elementi della prima colonna sono nomi (stringhe) senza ripetizioni gli elementi della seconda colonna sono numeri interi. E` modificabile.
La rappresentazione private Vector dom; private Vector cod; Due vettori per dominio (Stringhe) e codominio (Integer) Il vettore dom non contiene ripetizioni
public Table(){ \\EFFECTS\\EFFECTS: costruisce un nuovo Table vuoto dom=new Vector(); cod=new Vector();} public int length(){ \\EFFECTS\\EFFECTS: restituisce il numero di righe di this return dom.size();}
public String first-element(int i) throws InvalidException { \\EFFECTS: restituisce la stringa della i-esima riga se \\EFFECTS \\ esiste, altrimenti solleva l’eccezione InvalidException if (! 0<=i<dom.size()) throw new InvalidException(Table.fe); return (String) dom.get(i);} public int second-element(int i throws InvalidException { \\EFFECTS: restituisce la stringa della i-esima riga se \\EFFECTS \\ esiste, altrimenti solleva l’eccezione InvalidException if (! 0<=i<cod.size()) throw new InvalidException(Table.fe); return ((Integer) cod.get(i)).intValue();}
public void add-row(String s,int i) throws InvalidException { \\EFFECTS: se s compare gia’ in this solleva \\InvalidException, altrimenti aggiunge una nuova riga alla \\tabella contenente (s,i) \\EFFECTS for (int j=0; j < dom.size(); j++){ if (s.equals (dom.get(i))) throw new InvalidException(Table.fe); } dom.add(s); cod.add(new Integer(i)); }