Concetti Chiave
- La classe "frazione" permette di eseguire operazioni aritmetiche tra numeri razionali, definendo operazioni come somma, differenza, prodotto e quoziente.
- Le funzioni friend sono utilizzate per consentire l'accesso ai membri privati della classe, pur essendo esterne alla classe stessa.
- La classe offre costruttori per inizializzare le frazioni e metodi per ricevere input e comunicare output.
- La funzione privata "riduci" semplifica la frazione utilizzando il massimo comun divisore calcolato tramite una funzione ricorsiva "mcd".
- Il programma richiede l'implementazione della classe "frazione" in C++ e un semplice programma per testare le sue funzionalità.
Scrivere un pgn C++ che consenta di effettuare le quattro operazioni aritmetiche tra i numeri razionali, utilizzando una classe frazione opportunamente costruita.
Dopo un’accurata analisi si perviene alla seguente dichiarazione della classe frazione:
class frazione{
friend frazione somma (const frazione & a, const frazione & b);
friend frazione differenza (const frazione & a, const frazione & b);
friend frazione prodotto (const frazione & a, const frazione & b);
friend frazione quoziente (const frazione & a, const frazione & b);
public:
frazione(); //costruttore di default
frazione(int num, unsigned int den =1); //costruttore generico
void ricevi(); //input
void comunica(); //output
private:
void riduci(); //funzione di servizio
long num; //numeratore
unsigned long den; //denominatore > 0
};
Osservazioni:
Che cosa sono le funzioni friend?
Le funzioni friend sono funzioni che, pur non appartenendo alla classe, hanno libero accesso a tutti i campi
(anche a quelli privati) della classe stessa.
Es.
friend frazione somma (const frazione & a, const frazione & b);
Questa funzione prende in input due oggetti di tipo frazione e ritorna, per valore, un oggetto di tipo frazione che
rappresenta la somma dei due oggetti (a e b) di input.
Implementazione (delle funzioni friend):
Non si indica né la parola chiave friend, né il riferimento alla classe.
frazione somma (const frazione & a, const frazione & b)
{
…..
}
Il metodo privato riduci() “semplifica” un oggetto di tipo frazione.
Ti ricordo che per ridurre ai minimi termini una frazione occorre dividere numeratore e denominatore per il loro massimo comun divisore.
a) implementa in C++ la classe frazione;
b) costruisci un semplice pgm C++ per provare la classe frazione.