/**
   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;
  private Cliente titolare;

   /**
      Costruisce un oggetto Conto con saldo 0
   */
   public Conto(Cliente titolare) {
     this.titolare = titolare;
     saldo = 0;
     numContiCreati++;
   }

   /**
      Costruisce un oggetto conto.
      @param saldoIniziale il saldo iniziale
   */
   public Conto(Cliente titolare, double saldoIniziale, double tasso) {
     this.titolare = titolare;
     saldo = saldoIniziale;
     this.tasso = tasso;
     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;
     }
   }// far provare ad accedere a nuovoSaldo fuori dal suo scope


   public void accreditaInteresse() {
     saldo += saldo*tasso/100;
   }

   public void trasferisci(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;
   }

}

class Cliente {
  String cognome;
  String nome;
  int annoDiNascita;

  Cliente(String c, String n, int a) {
    cognome = c;
    nome = n;
    annoDiNascita = a;
  }
}


