Primo Compitino 2007
Primo esercizio Identificare gli errori segnalati dal compilatore Verifica statica del codice Regole di binding per i nomi (quelle della semantica) Visibilita’ nomi: pubblico, privato Tipi
Classe Sopra public class Sopra extends Object{ public static int x; public int y; private int w; public static void set (int i) {x = y + i;} } public Sopra metodo (int i) {set(i); Sopra p1= new Sopra(); y = p1.y + i;p1.y = x + 1; return p1; } {y=x;} }
Classe Sotto public class Sotto extends Sopra { public int z; public Sopra metodo (int i) {set (i); Sopra p1 = new Sotto(); z = p1.y-i; p1.z = x + w; return p1;} {z = 5;} }
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)); }