La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Astrazione di dati Esercizio 1. Si completi l’implementazione Poly.add data a lezione con la specifica e l’implementazione degli ausiliari min e max data.

Presentazioni simili


Presentazione sul tema: "Astrazione di dati Esercizio 1. Si completi l’implementazione Poly.add data a lezione con la specifica e l’implementazione degli ausiliari min e max data."— Transcript della presentazione:

1 Astrazione di dati Esercizio 1. Si completi l’implementazione Poly.add data a lezione con la specifica e l’implementazione degli ausiliari min e max data a lezione data a lezione Esercizio 2. Si completi l’implementazione con l’implementa- zione del metodo mul specificato come nel testo Esercizio 3. Si modifichi l’implementazione di Poly.add data a lezione in accordo alla seguente specifica di reset: private Poly reset(int c, int i) throws NegativeIntegerException, InvalidDegreeException; //modifies: this //effects: se i<0 solleva eccezione NIE, altrimenti se this.degree()

2 Esercizi Esercizio 4. Si confronti l’implementazione di Poly.add discussa a lezione con quella presentata nel testo. Si dica in particolare, – quali vantaggi offre l’introduzione dei metodi ausiliari min, max, reset; – come si concilia la presenza del modificatore reset con la non modificabilità dei valori Poly richiesta nella specifica; – dove l’implementazione del testo richiede una accessibilità dello stato, trms, del parametro q a livello dell’intera classe Poly – come l’implementazione data a lezione limita l’accessibilità al solo livello dell’oggetto this.

3 IntSet: uso Vectors public class IntSet{ //overview: gli IntSet sono oggetti modificabili per insiemi di interi. Un IntSet è un valore {x1,…,xn} per n arbitrari, distinti interi xi. private Vector els; //costruttori public IntSet() //Effects: inizializza this all’insieme vuoto {els = new Vector();} public void insert(int x) //modifies: this //effects: aggiunge x a this se non già presente, i.e: this_post=this+{x} {Integer y = new Integer(x); if (getIndex(y) < 0) els.add(y);} if (getIndex(y) < 0) els.add(y);} public void remove(int x) //modifies: this //effects: rimuove x da this se presente, i.e: this_post=this-{x} {int n = getIndex(new Integer(x)); if (n < 0) return; if (n < 0) return; els.set(n,els.get(size()-1)); els.set(n,els.get(size()-1)); els.remove(els.size()-1);} els.remove(els.size()-1);}… public int size() //effects: calcola cardinalità di this {return els.size();} //***** ausiliarie ******** private int getIndex(Integer x) //effects: se x occorre in this.els alla posizione i, per 0<=i

4 Poly: uso array - int[] public class Poly{ //overview: I Poly sono oggetti non modificabili per polinomi a coefficienti interi. Un Poly è un // valore c o +c 1 x 1 +…+c n x n, per abitrario n e c i intero possibilmente 0. private int[] trms; public Poly() //Effects: inizializza this al polinomio 0, i.e: n=0 & c o =0. {trms = new int[0];} public Poly(int c, int n) throws NegativeExponentException //Effects: se n<0 solleva l’eccezione, altrimenti inizializza this al polinomio c n x n. {if (n<0) throw new NegativeExponentException(“Poly:Poly” ); if(c==0) {trms = new int[0]; return;} if(c==0) {trms = new int[0]; return;} trms = new int[n+1]; trms = new int[n+1]; for(int j=0; j=0; j--) if (coeff(j)+q.coeff(j) != 0) break; else dmax--; if (dmin == dmax) for (int j=dmax; j>=0; j--) if (coeff(j)+q.coeff(j) != 0) break; else dmax--; if (dmax == -1) return new Poly(); if (dmax == -1) return new Poly(); Poly r = new Poly (max.coeff(dmax), dmax); Poly r = new Poly (max.coeff(dmax), dmax); if (dmin > dmax) r.reset(r.coeff(dmax)+min.coeff(dmax), dmax); if (dmin > dmax) r.reset(r.coeff(dmax)+min.coeff(dmax), dmax); for (int j= 0; j<=dmin & j


Scaricare ppt "Astrazione di dati Esercizio 1. Si completi l’implementazione Poly.add data a lezione con la specifica e l’implementazione degli ausiliari min e max data."

Presentazioni simili


Annunci Google