Originariamente inviato da andbin
Sì, con l'unica precisazione da fare: gli indici partono da 0, quindi le colonne sono 0 e 1.
ah ok...
Ok...ora però ho qualche altro problema con la seconda parte dell'esame...sigh
Il testo del secondo esercizio(che si ricollega al primo esercizio) dice:
codice:
Problema 2.
Sia data la classe InsiemeDiFrazioni che rappresenta e gestisce insiemi di frazioni. Della classe
InsiemeDiFrazioni viene fornita la specifica, descritta come segue:
public class InsiemeDiFrazioni {
/** OVERVIEW: implementa un tipo di dati astratto i cui elementi
appartengono all’insieme V={ {f1, f2, ...., fn}: ogni elemento fi è
una frazione, cioè, una coppia di interi relativamente primi};
gli oggetti istanza di questa classe sono mutabili;
l’insieme vuoto è rappresentabile mediante questa classe.
*/
/** EFFECTS: crea l’oggetto corrispondente ad un insieme vuoto di frazioni
*/
public InsiemeDiFrazioni() { .... }
/** REQUIRES: x != null ed x non contenuto in this
EFFECTS: inserisce x in this
MODIFIES: this
*/
public void inserisci(Frazione x) { .... }
/** REQUIRES: x != null
EFFECTS: se x è contenuto in this restituisce true, altrimenti
restituisce false
*/
public boolean contiene(Frazione x) { .... }
/** REQUIRES: this != insieme vuoto
EFFECTS: restituisce la frazione in this il cui valore è più vicino ad
x
*/
public Object get(double x) { .... }
/** REQUIRES: x != null e x this != insieme vuoto
EFFECTS: rimuove x da this se x è contenuto in this
MODIFIES: this
*/
public void rimuovi(Frazione x) { .... }
public String toString() { .... }
}
Si consideri, infine, una classe di test per le due classi sopra descritte che contenga, oltre al metodo main, il metodo
getFirst che prende come parametro, indifferentemente, un InsiemeDiFrazioni o un Dizionario (classe da
definire al problema 1) e che estrae dalla collezione ricevuta come parametro l’elemento che risulta primo rispetto
all’ordinamento definito, rispettivamente, nell’insieme delle frazioni e nell’insieme { parola-traduzione}, cioè:
· un oggetto f1 di tipo Frazione precede un oggetto f2 di tipo Frazione se
f1.getValore() < f2.getValore()
dove double getValore() è un metodo definito nella classe Frazione;
· una coppia parola1-traduzione1 precede una coppia parola2-traduzione2 se parola1 precede
lessicograficamente parola2.
Si richiede il progetto e l’implementazione del metodo getFirst e di tutte le entità Java coinvolte.
Io l'ho pensato così: creo un'interface chiamata CollConMinimo che al suo interno contiene solamente un metodo abstract calcolaMinimo()
Poi creo altre due classi: una classe che chiamo DizionarioConMinimo che estende Dizionario precedentemente definita ed implementa CollConMinimo. Ed un'altra classe chiamata InsiemediFrazioniConMinimo che sempre estende la classe InsiemeDiFrazioni di cui mi è stata fornita la specifica ed implementa l''interfaccia CollConMinimo.
Per DizionarioConMinimo dovrebbe bastare questo codice, l'unica cosa è che dovrei implementare il metodo get nella classe Dizionario ma vabbè quello è un attimo:
codice:
public class DizionarioConMinimo extends Dizionario implements CollConMinimo{ // Ereditarietà multipla
public DizionarioConMinimo(String[][] x){
super(x); // Invoca il costruttore della classe padre Dizionario passandogli la matrice di stringhe x
}
public Object calcolaMinimo(){
int i = 1;
boolean b = true;
String s;
try{
s = get(0)
}catch(IndiceErratoException e){}
while(b){ // Finchè b è true
try{ // Prova ad eseguire
if(i.get(i).compare(s) < 0) // Se l'i-esima stringa precede lessicograficamente la stringa contenuta in s
s = get(i); // Metti la stringa all'i-esimo posto in s
}catch(IndiceErratoException e){b = false;} // Quando viene sollevata l'eccezione imposta b a false per terminare il ciclo
i++; // Incrementa i per passare all'elemento successivo
}
return s; // Restituisci la stringa calcolata
}
}
Invece mi impippo nello scrivere il metodo calcolaMinimo per InsiemeDiFrazioniConMinimo in quanto dalla specifica non ho metodi per accedere agli oggetti della collezione di frazioni...qualche idea?
Poi vabbè per la classe di Test richiesta posso fare
codice:
public class Test{
public Object getFirst(CollConMinimo c){
return c.calcolaMin();
}
}
Mi date una mano?
Tnx