Ragazzi vi chiedo aiuto per questa esercitazione. Se riuscite a darmi la soluzione in tempi celeri è meglio! ;D
1 Introduzione
Si vuole realizzare un modulo Java per la gestione delle espressioni frazionarie. Per fare questo si richiede l’implementazione di alcune classi Java di seguito descritte.
2 Progettazione ed implementazione 2.1 FrazioneInterface
Rappresenta l’interfaccia di una generica frazione con i seguenti metodi di istanza:
int getNumeratore(): numeratore della frazione in valore assoluto
?
int getDenominatore(): denominatore della frazione in valore assoluto
?
int getSegno(): segno della frazione (1 se la frazione è positiva o nulla e -1 se negativa)
?
FrazioneInterface riduciAiMinimiTermini(): restituisce una nuova frazione ottenuta da quella corrente che risulta essere ai minimi termini cioè numeratore e denominatore sono primi fra loro.
2.2 Frazione
Ogni frazione (determinata) è rappresentata da una classe Java concreta che si trova nel package frazioni di nome Frazione che deriva dall’interfaccia Frazione e ne implementa tutti i metodi. La classe deve essere progettata per essere immutabile e contiene i campi privati finali necessari a memorizzare il numeratore, il denominatore e il segno oltre ad implementare i seguenti metodi pubblici:
?
Un costruttore a due argomenti pubblico che, presi rispettivamente numeratore e denominatore (interi) e memorizza tali informazioni su opportune variabili di istanza private.
?????il metodo public boolean equals(Object o) che ritorna true se le frazioni rappresentano la stessa frazione (uguaglianza profonda).
?????il metodo public double valore() che ritorna il valore decimale associato alla frazione
?????il metodo public String toString() che ritorna una stringa nella forma “<SEGNO><NUMERATORE- ASSOLUTO>/<DENOMINATORE-ASSOLUTO>” in cui numeratore e denominatore sono in valore assoluto e il segno (+ o -) è posto davanti la frazione. Per il valore 0 indicare il segno ‘+’
?????Il metodo public clone() secondo le regole definite per la clonabilità
?????public boolean equivalente(FrazioneInterface f): ritorna true se la frazione this e la frazione f passata per parametro sono equivalenti cioè rappresentano lo stesso valore
???2.3 Operatore
Alle frazioni è possibile applicare le classiche operazioni aritmetiche (somma, prodotto, sottrazione, divisione). Tali operazioni sono rappresentate in Java attraverso la classe Operatore immutabile che si trova nel package operatori. La classe contiene i campi privati necessari a memorizzare le informazioni richieste ed i seguenti metodi pubblici:
?2.4
•
• •
un costruttore ad un argomento di tipo carattere che definisce l’operazione (i valori valido sono ‘+’, ‘-‘, ‘*’, ‘/’) e memorizza il valore in opportuno campo privato.
il metodo di istanza char getOperatore () che restituisce il simbolo dell’operazione svolta
il metodo di istanza FrazioneInterface calcola(FrazioneInterface , FrazioneInterface f2) che restituisce il risultato dell’operazione applicata alle frazioni specificate come parametro.
Controllo dell’input
Per l’input fornito alle varie classi si assuma:
1)
2) 3)
Per la classe Frazione il numeratore e denominatore sono tali da determinare solo frazioni ben definite (denominatore non nullo); quindi non è necessario gestire i casi di frazioni impossibili o indeterminate.
a. Sono quindi ammesse frazioni proprie ed improprie oltre che frazioni che rappresentano il valore 0 (ad es 0/10) o valori interi (25/1)
Per la classe Operatore il carattere fornito al costruttore appartiene sempre all’insieme +,-,*,/ In tutte le invocazioni dei metodi i parametri di tipo riferimento sono sempre not null
Realizzazione del codice
?2.5
Nella realizzazione del programma si assuma che tutti i parametri dei metodi da implementare siano sempre validi a meno dei casi menzionati nelle specifiche.
Realizzare il codice in modo da poter compilare ed eseguire la classe ProvaEserc1.java descritta nella sezione “Valutazione”.
2.6 Valutazione
A titolo di esempio viene fornita una classe di test:
• ProvaEserc1 contenente un main di prova che effettua alcuni semplici test di correttezza sulla classe Frazione, Operaore e relativa interfaccia, che permette di verificare la correttezza della struttura delle classi e metodi.
Per compilare correttamente la classe ProvaEserc1.java è necessario inserire anche la classe UtilStudente.java fornita.