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 |