lunedì 25 novembre 2013

Prima esercitazione sulle classi

Disponibile una nuova esercitazione relativa alla scrittura di semplici classi.

5 commenti:

  1. Salve professore.
    Avrei un dubbio riguardo l'ultimo esercizio. Quando il testo ci chiede di verificare il corretto funzionamento delle quattro funzioni per le operazioni tra frazioni, ed implementarle, dobbiamo dare per scontato che quella definizione del metodo (data dal testo) sia corretta ed usare quello, o possiamo cambiarla come vogliamo? Io ad esempio pensavo che il tipo di ritorno debba essere Razionale&, e che si debbano passare due variabili, sempre del tipo Razionale&, in modo da potere passare (senza modificarli, come richiesto) i valori della classe "a" e della classe "b", e ritornare il puntatore this, in questo modo:

    class Razionale{
    private:
    int num;
    int den;
    public:
    Razionale();
    void stampa()const;
    void leggi();
    void semplifica();
    !!@@---> Razionale& moltiplica(Razionale&, Razionale&); <---@@!!!
    };

    Razionale& Razionale::moltiplica(Razionale& a, Razionale& b){
    num=(a.num)*(b.num);
    den=(a.den)*(b.den);
    return (*this);
    }

    nel main:
    Razionale a, b, c;
    c.moltiplica(a,b);

    Spero di essere stato chiaro. Grazie mille per l'attenzione.

    RispondiElimina
  2. Quando progetti una classe sei libero di mettere tutti i metodi che ritieni opportuni. Nel caso dell'esercizio ti veniva semplicemente richiesto di implementare quelle particolari funzioni membro e non di riprogettare la classe.
    In termini generali comunque la funzione che proponi potrebbe anche essere una scelta valida.

    RispondiElimina
  3. Salve professore,
    ho un dubbio riguardo l'ultimo esercizio. I metodi somma, sottrai, ecc..., devono essere const?

    Le propongo un esempio sul metodo moltiplica:

    Razionale Razionale :: moltiplica (Razionale add) const {
    Razionale ris;
    ris.num = num * add.num;
    ris.den = den * add.den;
    ris.semplifica();
    return ris;
    }

    RispondiElimina
  4. Si, indubbiamente possono essere const. Infatti il metodo viene chiamato per l'operando di sinistra dell'operazione che certamente non deve cambiare durante l'operazione.

    RispondiElimina