ContoCorrente.java
Created with JBuilder
class ContoCorrente {

  // Attributo costante: dimensione iniziale dell'elenco operazioni
  public static final int DIMENSIONE_INIZIALE_ELENCO = 1;

  // Attributi
  private String   intestatario;
  private double   saldo;
  private double[] elencoOperazioni;
  private int      numeroOperazioni;

  // Costruttore
  public ContoCorrente( String intestatario ) {
    this.intestatario = intestatario;
    saldo = 0.0;
    elencoOperazioni = new double[DIMENSIONE_INIZIALE_ELENCO];
    numeroOperazioni = 0;
  }

  // Metodo per il deposito
  public void deposita( double somma ) {
    saldo += somma;
    aggiungiOperazione(somma);
  }

  // Metodo per il prelievo
  public void preleva( double somma ) {
    saldo -= somma;
    aggiungiOperazione(-somma);
  }

  // Metodi per l'interrogazione
  public double restituisciSaldo() {
    return saldo;
  }
  public int restituisciNumeroOperazioni() {
    return numeroOperazioni;
  }

  // Metodo interno per la registrazione di un'operazione
  private void aggiungiOperazione( double importo ) {
    if (numeroOperazioni == elencoOperazioni.length) {
      espandiElencoFattore(2);
    }
    elencoOperazioni[numeroOperazioni] = importo;
    ++numeroOperazioni;
  }

  // Metodo interno per l'espansione dell'elenco operazioni
  private void espandiElencoFattore( int fattore ) {
    double[] temp = new double[numeroOperazioni * fattore];
    for (int i = 0; i < numeroOperazioni; ++i) {
      temp[i] = elencoOperazioni[i];
    }
    elencoOperazioni = temp;
  }
}

ContoCorrente.java
Created with JBuilder