/**
   Un conto ha un saldo che puņ essere cambiato con prelievi e depositi
*/
public class Conto {
  private double saldo;
  private double tasso;
  private static int numContiCreati;

   /**
      Costruisce un oggetto Conto con saldo 0
   */
   public Conto() {
     saldo = 0;
     numContiCreati++;
   }

   /**
      Costruisce un oggetto conto.
      @param saldoIniziale il saldo iniziale
   */
   public Conto(double saldoIniziale) {
     saldo = saldoIniziale;
     numContiCreati++;
   }


   public static int numContiCreati() {
     return numContiCreati;
   }


   /**
      Effettua un versamento sul conto.
      @param importo l'importo da versare
   */
   public void deposita(double importo) {
     if(importo < 0) System.out.println("errore: valore negativo");
     else
       saldo = saldo + importo;
   }

   /**
      Effettua un prelievo dal conto.
      @param importo l'importo da prelevare
   */
   public void preleva(double importo) {
     if(importo < 0) System.out.println("errore: valore negativo");
     else {
      double nuovoSaldo = saldo - importo;
      if(nuovoSaldo < 0) System.out.println("saldo insufficiente");
      else saldo = nuovoSaldo;
    }
   }

   public void faiBonifico(double importo, Conto conto) {
     if(importo < 0) System.out.println("errore: valore negativo");
     else if(importo > saldo) System.out.println("saldo insufficiente");
     else {
       preleva(importo);
       conto.deposita(importo);
     }
   }

   /**
      restituisce il saldo corrente del conto.
      @return il saldo corrente
   */
   public double getSaldo() {
     return saldo;
   }

}
