ContoCorrente6.java
Created with JBuilder
// Questa versione di conto corrente prevede l'utilizzo
// di due attributi di tipo long per rappresentare il
// saldo del conto distinto in euro e in centesimi di euro
// L'interfaccia della classe, ossia l'insieme dei metodi
// public, è la stessa di ContoCorrente (versione base)

class ContoCorrente6 {

  // Lo stato è rappresentato solo dal saldo
  // diviso nelle componenti euro e centesimi
  private long saldoEuro;
  private long saldoCentesimi;

  // Costruttore elementare
  public ContoCorrente6() {
    saldoEuro = 0;
    saldoCentesimi = 0;
  }
  // Costruttore aggiuntivo: consente di inizialiazzare
  // separatamente euro e centesimi di euro
  public ContoCorrente6( long euro, long centesimi ) {
    saldoEuro = euro;
    saldoCentesimi = centesimi;
  }

  // Metodo per depositare somme
  public void deposita( double somma ) {
    // Separare parte intera e parte decimale
    // Math.floor tronca la parte decimale di somma
    // Math.round arrotonda un double in un long
    long sommaEuro = Math.round(Math.floor(somma));
    long sommaCentesimi =
        Math.round((somma - (double)sommaEuro) * 100);
    // Sommare le due parti al saldo
    saldoEuro += sommaEuro;
    saldoCentesimi += sommaCentesimi;
    // Gestire il riporto: se la somma in centesimi
    // è maggiore di 100, allora sottraiamo 100,
    // lasciamo la differenza nei centesimi e aggiungiamo un euro
    if (saldoCentesimi > 100) {
      saldoCentesimi -= 100;
      ++saldoEuro;
    }
  }

  // Metodo per prelevare somme
  public double preleva( double somma ) {
    // Separare parte intera e parte decimale
    long sommaEuro = Math.round(Math.floor(somma));
    long sommaCentesimi =
        Math.round((somma - (double)sommaEuro) * 100);
    // Sottrarre le due parti al saldo
    saldoCentesimi -= sommaCentesimi;
    saldoEuro -= sommaEuro;
    // Gestire il riporto: se la somma in centesimi
    // è minore di 0, allora aggiungiamo 100,
    // lasciamo la somma nei centesimi e togliamo un euro
    if (saldoCentesimi < 0) {
      saldoCentesimi += 100;
      --saldoEuro;
    }
    return somma;
  }

  // Metodo per ottenere il saldo
  public double ottieniSaldo() {
    return (double)saldoEuro +
        (double)saldoCentesimi / (double)100;
  }

}

ContoCorrente6.java
Created with JBuilder