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)); } }