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:
01 | public class BankAccount |
02 | { |
03 |
04 | // Metodo Costruttore inizializzato con nome proprietario, saldo e numeroAcc |
05 | public BankAccount( double a, String n, int num) |
06 | { |
07 | acconto = a; |
08 | nome = n; |
09 | numAcc = num; |
10 | } |
11 |
12 | // Metodo per il deposito di denaro nel conto |
13 | public void deposit( double s) |
14 | { |
15 | double temp = acconto; |
16 | acconto = temp + s; |
17 | } |
18 |
19 | // Metodo per il prelievo di denaro dal conto |
20 | public void withdraw( double s) |
21 | { |
22 | double temp = acconto; |
23 | acconto = temp - s; |
24 | } |
25 |
26 | // Metodo che restituisce il valore del conto |
27 | public double getBalance() |
28 | { |
29 | return acconto; |
30 | } |
31 |
32 | // Metodo che restituisce il numero di conto |
33 | public int getNumber() |
34 | { |
35 | return numAcc; |
36 | } |
37 |
38 | // Metodo che restituisce il nome del conto |
39 | public String getName() |
40 | { |
41 | return nome; |
42 | } |
43 |
44 | private int numAcc; |
45 | private double acconto; |
46 | private String nome; |
47 | } |
La classe Bank che gestisce la collezione di BankAccount:
01 | import java.util.ArrayList; |
02 | public class Bank |
03 | { |
04 | ArrayList<BankAccount> banca; |
05 |
06 | // Metodo Costruttore |
07 | public Bank() |
08 | { |
09 | this .banca = new ArrayList<BankAccount>(); |
10 | } |
11 |
12 | // Metodo che aggiunge un nuovo conto nella banca |
13 | public void addAccount( double b, String nome) |
14 | { |
15 | int i = banca.size() + 1 ; |
16 | BankAccount bk = new BankAccount(b,nome,i); |
17 | banca.add(bk); |
18 | } |
19 |
20 | // Metodo che permette di depositare denaro in un conto daro il numeroConto |
21 | public void deposit( int n , double s) |
22 | { |
23 | for ( int j= 0 ; j<banca.size(); j++) |
24 | { |
25 | BankAccount temp = (BankAccount) banca.get(j); |
26 | int number = temp.getNumber(); |
27 | if (number == n) |
28 | { |
29 | temp.deposit(s); |
30 | } |
31 | } |
32 | } |
33 |
34 | // Metodo che permette di sottrarre una somma a un conto dato un numeroConto |
35 | public void withdraw( int n, double s) |
36 | { |
37 | for ( int j= 0 ; j<banca.size(); j++) |
38 | { |
39 | BankAccount temp = (BankAccount) banca.get(j); |
40 | int number = temp.getNumber(); |
41 | if (number == n) |
42 | { |
43 | temp.withdraw(s); |
44 | } |
45 | } |
46 | } |
47 |
48 | //Metodo che restituisce il valore del conto dato un numeroConto |
49 | public String getBalance( int n) |
50 | { |
51 | for ( int j= 0 ; j<banca.size(); j++) |
52 | { |
53 | BankAccount temp = (BankAccount) banca.get(j); |
54 | if (temp.getNumber()==n){ |
55 | return "Conto codice " +temp.getNumber()+ " con importo " +temp.getBalance(); |
56 | } |
57 | } |
58 | return "Conto non trovato!" ; |
59 | } |
60 | |
61 | // Metodo che trasferisce una somma di denaro da un conto ad un altro |
62 | public boolean transfer( int n1, int n2, double d) |
63 | { |
64 | BankAccount uscita = null ; |
65 | BankAccount entrata = null ; |
66 | for ( int j= 0 ; j<banca.size(); j++) |
67 | { |
68 | BankAccount temp = (BankAccount) banca.get(j); |
69 | if (temp.getNumber()==n1){ |
70 | uscita = temp; |
71 | } |
72 | if (temp.getNumber()==n2){ |
73 | entrata = temp; |
74 | } |
75 | } |
76 | if (uscita!= null && entrata!= null ){ |
77 | uscita.withdraw(d); |
78 | entrata.deposit(d); |
79 | return true ; |
80 | } |
81 | return false ; |
82 | } |
83 | } |
La classe di test:
01 | public class TestaBanca |
02 | { |
03 | public static void main(String[] args) |
04 | { |
05 | // Creo un nuovo oggetto Bank |
06 | Bank prova = new Bank(); |
07 |
08 | // Aggiungo 4 nuovi conti |
09 | prova.addAccount( 2000 , "Marco Rossi" ); |
10 | prova.addAccount( 1000 , "Enzo Bianchi" ); |
11 | prova.addAccount( 500 , "Lucia Neri" ); |
12 | prova.addAccount( 700 , "Silvia Rossini" ); |
13 |
14 | // Effettuo alcune operazioni sui conti |
15 | prova.deposit( 1 , 200 ); |
16 | prova.withdraw( 2 , 1000 ); |
17 |
18 | // Visualizzo a video lo stato dei conti presenti nella banca |
19 | System.out.println(prova.getBalance( 1 )); |
20 | System.out.println(prova.getBalance( 2 )); |
21 | System.out.println(prova.getBalance( 3 )); |
22 | System.out.println(prova.getBalance( 4 )); |
23 | |
24 | // Trasferisco una somma di denaro da un conto all'altro |
25 | double somma = 100 ; |
26 | if (prova.transfer( 1 , 2 , somma)== true ){ |
27 | System.out.println( "Trasferimento denaro avvenuto correttamente!" ); |
28 | } else { |
29 | System.out.println( "Errore nel trasferimento di denaro!" ); |
30 | } |
31 | |
32 | // Ristampo lo stato dei due conti soggetti a trasferimento denaro |
33 | System.out.println(prova.getBalance( 1 )); |
34 | System.out.println(prova.getBalance( 2 )); |
35 | } |
36 | } |