/*
  Copyright (C) 2008 Alessandro Bugatti (alessandro.bugatti@istruzione.it)

  This program is free software; you can redistribute it and/or
  modify it under the terms of the GNU General Public License
  as published by the Free Software Foundation; either version 2
  of the License, or (at your option) any later version.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
*/

/*! \file
 *  \brief Classe semplice per gestire un conto corrente
 *  con le operazioni di creazione, accredito, addebito e saldo
 *  \author Alessandro Bugatti
 *
 *  \version 0.1
 *  \date  Creazione  07/03/2009
 *  \date  Ultima modifica 07/03/2009
 *
 */

#ifndef CONTOCORRENTE_H
#define CONTOCORRENTE_H

#include <string>

using namespace std;

/*!
 *  \brief Classe semplice per gestire un conto corrente
 *  con le operazioni di creazione, accredito, addebito e saldo
 *  \author Alessandro Bugatti
 *
 *  \version 0.1
 *  \date  Creazione  07/03/2009
 *  \date  Ultima modifica 07/03/2009
 *
 */

class ContoCorrente
{
    string Codice///<Identificativo unico del conto corrente
    string Nome///<Nome del proprietario
    string Cognome///<Cognome del proprietario
    double capitale///<Soldi non conto corrente
    /**
    *   \brief Metodo stub per simulare la generazione del codice
    *   \return Codice generato
    */
    string generaCodice(){ return "000000";}
public:
    /**
    *   \brief Costruttore della classe a cui vengono passati il
    *   nome e il cognome del proprietario del conto
    *   \param n Nome del proprietario
    *   \param c Cognome del proprietario
    *   \warning Il codice viene impostato in maniera fissa dal
    *   metodo generaCodice, se si volesse falro più realistico
    *   bisognerebbe modificare il metodo
    */
    ContoCorrente(const stringnconst stringc);
    /**
    *   \brief Deposita dei soldi
    *   \param d Quantità di soldi depositati
    */
    void deposito(double d);
    /**
    *   \brief Preleva dei soldi
    *   \param p Quantità di soldi prelevati
    *   \return Vero se il prelievo è possibile, falso altrimenti
    *   \warning Se la quantità di soldi da prelevare
    *   è superiore al capitale depositato non viene
    *   effettuato il prelievo
    */
    bool prelievo(double p);
    /**
    *   \brief Legge il saldo corrente
    *   \return Saldo corrente
    */
    double saldo() const;
    /**
    *   \brief Restituisce il nominativo del proprietario
    *   \return Stringa composta dal cognome e nome
    */
    string getNominativo() const;

};

#endif // CONTOCORRENTE_H