La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Si dia la specifica del tipo di dato astratto Tabella.Una Tabella ha due colonne e un numero variabile di righe. Gli elementi della prima colonna sono.

Presentazioni simili


Presentazione sul tema: "Si dia la specifica del tipo di dato astratto Tabella.Una Tabella ha due colonne e un numero variabile di righe. Gli elementi della prima colonna sono."— Transcript della presentazione:

1 Si dia la specifica del tipo di dato astratto Tabella.Una Tabella 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 senza ripetizioni. E` non modificabile.

2

3 La specifica E’ l’interfaccia del tipo di dato astratto (per l’utente) Serve per astrarre dall’implementazione Non deve contenere riferimenti all’implementazione (che tra l’altro non c’è ancora) al fine di mascherarla

4 public class Tabella{ \\OVERVIEW\\OVERVIEW: una Tabella ha due colonne \\ed un numero variabile di righe; la \\prima colonna memorizza stringhe \\ e la seconda interi senza ripetizioni. \\ E’ non modificabile. public Tabella(){ \\EFFECTS\\EFFECTS: costruisce una nuova Tabella vuota} public int size(){ \\EFFECTS\\EFFECTS: restituisce il numero di righe di this }

5 public String get-first(int i) throws InvalidException { \\EFFECTS: restituisce la stringa della i-esima riga se \\EFFECTS \\ esiste, altrimenti solleva l’eccezione InvalidException} public int get-second(int i) throws InvalidException { \\EFFECTS: restituisce l’intero della i-esima riga se \\EFFECTS \\ esiste, altrimenti solleva l’eccezione InvalidException}

6 public Tabella add(String s,int i) throws InvalidException { \\EFFECTS: se s o i compaiono gia’ in this (nella prima o seconda \\EFFECTS \\colonna rispettivamente) solleva InvalidException, \\altrimenti restituisce una Tabella ottenuta aggiungendo \\la nuova riga (s,i) a this} } METODO PRODUTTORE: this e’ non modificabile

7 La rappresentazione private Pair[] coppie; Usiamo un array di coppie Per rappresentare le coppie tipo ausiliario Pair

8 Invariante I(c) = c.coppie != null & & per ogni 0 < = i< j < c.coppie.length (c.coppie[i] != null & & ! c.coppie[i].left. equals(c.coppie[j].left) & & c.coppie[i].rigth != c.coppie[j].right)

9 Funzione di astrazione alpha(c) = tabella che ha due colonne e c.coppie.length righe e tale che la riga i-esima e’ (c.coppie[i].left, c.coppie[i].right)

10 public class Tabella{ \\OVERVIEW\\OVERVIEW: una Tabella ha due colonne \\ed un numero variabile di righe; la \\prima colonna memorizza stringhe \\e la seconda interi senza ripetizioni. \\E` non modificabile. private Pair[] coppie; public Tabella(){ \\EFFECTS\\EFFECTS: costruisce una nuova Tabella vuota coppie=new Pair[0]; }

11 public int size(){ \\EFFECTS\\EFFECTS: restituisce il numero di righe di this return coppie.length ; } public String get-first(int i) throws InvalidException { \\EFFECTS: restituisce la stringa della i-esima riga se \\EFFECTS \\ esiste, altrimenti solleva l’eccezione InvalidException if (! 0<=i<coppie.length) throw new InvalidException(Tabella.gf); return coppie[i ].left; }

12 public int get-second(int i) throws InvalidException { \\EFFECTS: restituisce l’intero della i-esima riga se \\EFFECTS \\ esiste, altrimenti solleva l’eccezione InvalidException if (! 0<=i<coppie.length) throw new InvalidException(Tabella.gs); return coppie[i ].right; } }

13 public Tabella add(String s,int i) throws InvalidException { \\EFFECTS: se s o i compaiono gia’ in this (nella prima o seconda \\EFFECTS \\colonna rispettivamente) solleva InvalidException, \\altrimenti restituisce una Tabella ottenuta aggiungendo \\la nuova riga (s,i) a this} for (int j=0; j< coppie.length;j++) { if (coppie[j].left.equals(s) | | coppie[j].right==i) throw new InvalidException(Tabella.add);} Tabella nuovo=new Tabella(coppie.length+1); for (int j=0; j< coppie.length;j++) {nuovo.coppie[j]=coppie[j];} nuovo.coppie[coppie.length]=new Pair(s,i); return nuovo;} private Tabella (int n){ \\EFFECTS\\EFFECTS: costruisce una nuova Tabella vuota, la cui rappresentazione \\ è un array di dimensione n coppie= new Pair[n];} }


Scaricare ppt "Si dia la specifica del tipo di dato astratto Tabella.Una Tabella ha due colonne e un numero variabile di righe. Gli elementi della prima colonna sono."

Presentazioni simili


Annunci Google