Fabio Donatantonio

Resta connesso

Software Developer / Adjunct Professor

Esercizio 29 – Simulazione banca (ArrayList)

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

Fabio Donatantonio. Analista e sviluppatore full-stack di applicazioni web in linguaggio PHP. Professore a Contratto per le cattedre di Fondamenti di Informatica e Archivistica Digitale presso Università degli Studi eCampus. Dal 2008 curatore del sito www.donatantonio.net, da sempre appassionato di programmazione, mare, sigari e... musica.

Leave a reply

Your email address will not be published. Required fields are marked *

 

Didattica

Università degli Studi eCampus
Data Evento
05/07/2019
11:30
Esame Archivistica Digitale e Informatica per le Scienze Umane - Cds Filologia Moderna - Lettere - Novedrate(CO)
05/07/2019
11:30
Esame Introduzione all'Archivistica Digitale e all'Informatica per le Scienze Umane - Cds Letteratura, Arte, Musica e Spettacolo - Lettere - Novedrate(CO)
05/07/2019
11:30
Esame Abilità Informatiche e Telematiche - Cds Design e Discipline della Moda - Lettere - Novedrate(CO)
12/07/2019
11:30
Esame Introduzione all'Archivistica Digitale e all'Informatica per le Scienze Umane - Cds Letteratura, Arte, Musica e Spettacolo - Lettere - Roma
12/07/2019
11:30
Esame Archivistica Digitale e Informatica per le Scienze Umane - Cds Filologia Moderna - Lettere - Roma
12/07/2019
11:30
Esame Abilità Informatiche e Telematiche - Cds Design e Discipline della Moda - Lettere - Roma
Risorse
Guida HTML/CSS per principianti (link)
Introduzione agli ipertesti (link)
Esercizi guidati in Java (link)
Intelligenza artificiale (link)
Libri
Fondamenti di Informatica (2011) (link)
Informatica per le Scienze Umane (2011) (link)
Fondamenti di Informatica (2014) (link)
Pagina Docente
uniecampus.it - Scheda Docente (link)
Contatti
fabio.donatantonio[at]uniecampus.it

JWhisper, sviluppato presso il Dipartimento di Informatica Applicata dell'Università degli Studi di Salerno:

Stay Connected

Twitter

Le mie foto

Foto di Fabio Donatantonio
×