Esercizio 29 – Simulazione banca (ArrayList)
- Novembre 10, 2010
- by
- Donatantonio
Implementare e testare una classe Bank che contenga un ArrayList di oggetti di tipo BankAccount e abbia i seguenti metodi:
- addAccount(initialBalance, customerName)
- deposit(accountNumber, amount)
- withdraw(accountNumber, amount)
- getBalance(accountNumber)
- transfer(fromAccNumber, toAccNumber, amount)
La classe BankAccount fornirà i classici metodi per il deposito e il prelievo nonchè i metodi per la restituzione delle informazioni in esso contenute.
Realizzare inoltre una classe di test.
La classe BankAccount.java:
public class BankAccount
{
// Metodo Costruttore inizializzato con nome proprietario, saldo e numeroAcc
public BankAccount(double a, String n, int num)
{
acconto = a;
nome = n;
numAcc = num;
}
// Metodo per il deposito di denaro nel conto
public void deposit(double s)
{
double temp = acconto;
acconto = temp + s;
}
// Metodo per il prelievo di denaro dal conto
public void withdraw(double s)
{
double temp = acconto;
acconto = temp - s;
}
// Metodo che restituisce il valore del conto
public double getBalance()
{
return acconto;
}
// Metodo che restituisce il numero di conto
public int getNumber()
{
return numAcc;
}
// Metodo che restituisce il nome del conto
public String getName()
{
return nome;
}
private int numAcc;
private double acconto;
private String nome;
}
La classe Bank che gestisce la collezione di BankAccount:
import java.util.ArrayList;
public class Bank
{
ArrayList<BankAccount> banca;
// Metodo Costruttore
public Bank()
{
this.banca = new ArrayList<BankAccount>();
}
// Metodo che aggiunge un nuovo conto nella banca
public void addAccount(double b, String nome)
{
int i = banca.size() + 1;
BankAccount bk = new BankAccount(b,nome,i);
banca.add(bk);
}
// Metodo che permette di depositare denaro in un conto daro il numeroConto
public void deposit(int n , double s)
{
for(int j=0; j<banca.size(); j++)
{
BankAccount temp = (BankAccount) banca.get(j);
int number = temp.getNumber();
if(number == n)
{
temp.deposit(s);
}
}
}
// Metodo che permette di sottrarre una somma a un conto dato un numeroConto
public void withdraw(int n,double s)
{
for(int j=0; j<banca.size(); j++)
{
BankAccount temp = (BankAccount) banca.get(j);
int number = temp.getNumber();
if(number == n)
{
temp.withdraw(s);
}
}
}
//Metodo che restituisce il valore del conto dato un numeroConto
public String getBalance(int n)
{
for(int j=0; j<banca.size(); j++)
{
BankAccount temp = (BankAccount) banca.get(j);
if(temp.getNumber()==n){
return "Conto codice "+temp.getNumber()+" con importo "+temp.getBalance();
}
}
return "Conto non trovato!";
}
// Metodo che trasferisce una somma di denaro da un conto ad un altro
public boolean transfer(int n1, int n2, double d)
{
BankAccount uscita = null;
BankAccount entrata = null;
for(int j=0; j<banca.size(); j++)
{
BankAccount temp = (BankAccount) banca.get(j);
if(temp.getNumber()==n1){
uscita = temp;
}
if(temp.getNumber()==n2){
entrata = temp;
}
}
if(uscita!=null && entrata!=null){
uscita.withdraw(d);
entrata.deposit(d);
return true;
}
return false;
}
}
La classe di test:
public class TestaBanca
{
public static void main(String[] args)
{
// Creo un nuovo oggetto Bank
Bank prova = new Bank();
// Aggiungo 4 nuovi conti
prova.addAccount(2000,"Marco Rossi");
prova.addAccount(1000,"Enzo Bianchi");
prova.addAccount(500,"Lucia Neri");
prova.addAccount(700,"Silvia Rossini");
// Effettuo alcune operazioni sui conti
prova.deposit(1,200);
prova.withdraw(2,1000);
// Visualizzo a video lo stato dei conti presenti nella banca
System.out.println(prova.getBalance(1));
System.out.println(prova.getBalance(2));
System.out.println(prova.getBalance(3));
System.out.println(prova.getBalance(4));
// Trasferisco una somma di denaro da un conto all'altro
double somma = 100;
if(prova.transfer(1, 2, somma)==true){
System.out.println("Trasferimento denaro avvenuto correttamente!");
}else{
System.out.println("Errore nel trasferimento di denaro!");
}
// Ristampo lo stato dei due conti soggetti a trasferimento denaro
System.out.println(prova.getBalance(1));
System.out.println(prova.getBalance(2));
}
}

