Fabio Donatantonio

Resta connesso

Software Developer / Adjunct Professor

Esercizio 28 – Implementazione di un portafoglio

Implementare e testare una classe Purse come collezione di monete.
Una moneta è un’istanza di una classe Coin:
gli oggetti di Coin sono immutabili e hanno un nome (nome della moneta) e un valore (valore della moneta).

Deve essere possibile recuperare l’informazione contenuta in ogni oggetto Coin oltre che implementare i seguenti metodi:

  • addCoin(Coin aCoin): aggiungere una moneta al portafoglio
  • conteggio(String nomeCoin): conta il numero di monete dato un nome moneta
  • getTotal(): restituisce il totale monete presenti nel portafoglio
  • remove(Coin aCoin): rimuove una moneta di valore pari a a Coin se presente nella borsa
  • find(Coin aCoin): restituisce l’indice di una moneta di valore pari a Coin (private)

Vediamo innanzitutto la semplice classe Coin.java:

public class Coin
{
	double valore;
	String nome;

	// Metodo Costruttore Coin inizializzato con nome moneta e relativo valore
	public Coin(double v, String n){
		valore = v;
		nome = n;
	}

	// Metodo che restituisce il valore della moneta
	public double getValue(){
		return valore;
	}

	// Metodo che restituisce il nome della moneta
	public String getNome(){
		return nome;
	}
}

Quindi la classe che gestisce la collezzione di monete Purse.java:

import java.util.ArrayList;
public class Purse
{
private ArrayList<Coin> lista;

  	// Metodo Costruttore vuoto
  	public Purse(){
  		this.lista = new ArrayList<Coin>();
  	}

  	public void addCoin(Coin c){
  		lista.add(c);
  	}

  	// Metodo che restituisce il totale di monete presenti nel portafoglio
  	public void getTotal()
  	{
  		double totale = 0;
  		for(int i=0 ; i<lista.size(); i++)
  		{
  			Coin a = (Coin) lista.get(i);
  			double t = a.getValue();
  			totale = totale + t;
  		}
  		System.out.println(totale);
  	}

  	/* Metodo che conta il numero di monete presenti nel portafoglio
       data una moneta
  	 **/
  	public int conteggio(String nome)
  	{
  		int c = 0;
  		for(int i=0 ; i<lista.size(); i++)
  		{
  			Coin a = (Coin) lista.get(i);
  			String m = a.getNome();
  			if(m.equalsIgnoreCase(nome))
  			{
  				c++;
  			}
  		}
  		return c;
  	}

  	// Metodo che elimina una moneta dal portafolio
  	public String remove(Coin a)
  	{
  		String nome = a.getNome();
  		int i =0;
  		while (i < lista.size())
  		{
  			Coin b = (Coin) lista.get(i);
  			String v = b.getNome();
  			if(v.equalsIgnoreCase(nome))
  			{
  				lista.remove(i);
  				return "Moneta eliminata";
  			}
  			i++;
  		}
  		return "Moneta non presente";
  	}

  	// Metodo che verifica l'uguaglianza tra due monete
  	public boolean find(Coin a)
  	{
  		String nome = a.getNome();
  		int i =0;
  		while (i < lista.size())
  		{
  			Coin b = (Coin) lista.get(i);
  			String v = b.getNome();
  			if(v.equalsIgnoreCase(nome))
  			{
  				return true;
  			}
  			i++;
  		}
  		return false;
  	}
}

Infine una classe di test che permette all’utente di accedere, tramite un menu, alle funzioni di aggiunta moneta, rimozione moneta, stampa del saldo, conteggio e ricerca di monete.
La classe TestPurse.java:

import java.util.Scanner;
public class TestPurse {

	public static void main(String[] args)
	{
		// Costruisco un oggetto Purse
		Purse fabio = new Purse();
		Scanner in = new Scanner(System.in);

		String exit = "no";

	    // Visualizzo le varie procedure possibili
	    while (exit.equalsIgnoreCase("no"))
	    {
		    System.out.println("  *** MENU *** ");
		    System.out.println("1 - Aggiungere monete");
		    System.out.println("2 - Sottrarre monete");
		    System.out.println("3 - Cercare una moneta");
		    System.out.println("4 - Stampare il totale borsa");
		    System.out.println("5 - Esci");
		
		    int menu= in.nextInt();
		    String continua = "si";
		    String continua2 = "si";
		    // Aggiungo monete al portafoglio
		    if(menu == 1){
		    	while (continua.equalsIgnoreCase("si")){
			        System.out.println("Quale moneta vuoi aggiungere alla borsa?");
			        System.out.println("1 - 1 Euro");
			        System.out.println("2 - 2 Euro");
			        System.out.println("3 - 50 Centesimi di Euro");
			        System.out.println("4 - 20 Centesimi di Euro");
			
			        int scelta = in.nextInt();

			        if(scelta == 1){
			        	Coin moneta = new Coin(1,"Un Euro");
			        	fabio.addCoin(moneta);
			        }
			        if(scelta == 2){
			        	Coin moneta = new Coin(2,"Due Euro");
			        	fabio.addCoin(moneta);
			        }
			        if(scelta == 3){
			        	Coin moneta = new Coin(0.50,"50 Centesimi");
			        	fabio.addCoin(moneta);
			        }
			        if(scelta == 4){
			        	Coin moneta = new Coin(0.20,"20 Centesimi");
			        	fabio.addCoin(moneta);
			        }
			        // Stampo a video il contenuto del portafoglio
			        System.out.print("Nella tuo portafoglio è presente questa somma: ");
			        fabio.getTotal();
			        System.out.print("Vuoi continuare a inserire monete?");
			        continua = in.next();
		    	}
		    }
		    // Elimino monete dal portafoglio
		    if(menu == 2){
		    	while ( continua2.equalsIgnoreCase("si")){
		            System.out.println("Quale moneta vuoi eliminare dalla borsa?");
		            System.out.println("1 - 1 Euro");
		            System.out.println("2 - 2 Euro");
		            System.out.println("3 - 50 Centesimi di Euro");
		            System.out.println("4 - 20 Centesimi di Euro");
		
		            int scelta = in.nextInt();
		
		            if(scelta == 1){
		               Coin daEliminare = new Coin(1,"Un Euro");
		               System.out.println(fabio.remove(daEliminare));
		            }
		            if(scelta == 2){
		                Coin daEliminare = new Coin(2,"Due Euro");
		                System.out.println(fabio.remove(daEliminare));
		            }
		            if(scelta == 3){
		                Coin daEliminare = new Coin(0.50,"50 centesimi");
		                System.out.println(fabio.remove(daEliminare));
		            }
		            if(scelta == 4){
		                Coin daEliminare = new Coin(0.20,"20 centesimi");
		                System.out.println(fabio.remove(daEliminare));
		            }
		            // Stampo a video il contenuto del portafoglio
		            System.out.print("Nella tua borsa è presente questa somma: ");
		            fabio.getTotal();
		            System.out.print("Vuoi continuare a eliminare monete?");
		            continua2 = in.next();
		    	}
		    }

		    // Cerco una moneta nel portafoglio
		    if (menu == 3){
		        System.out.println("Quale moneta vuoi cercare nella borsa?");
		        System.out.println("1 - Un Euro");
		        System.out.println("2 - Due Euro");
		        System.out.println("3 - 50 Centesimi");
		        System.out.println("4 - 20 Centesimi");
		
		        int scelta = in.nextInt();

		        if(scelta == 1){
		               Coin daCercare = new Coin(1,"Un Euro");
		               System.out.println(fabio.find(daCercare));
		        }
		        if(scelta == 2){
		                Coin daCercare = new Coin(2,"Due Euro");
		                System.out.println(fabio.find(daCercare));
		        }
		        if(scelta == 3){
		                Coin daCercare = new Coin(0.50,"50 centesimi");
		                System.out.println(fabio.find(daCercare));
		        }
		        if(scelta == 4){
		                Coin daCercare = new Coin(0.20,"20 centesimi");
		                System.out.println(fabio.find(daCercare));
		        }
		    }
		    
		    // Stampo a video il contenuto del portafoglio
		    if(menu == 4){
		    	System.out.print("Il totale della borsa è : ");
		    	fabio.getTotal();
		    }
		    
		    // Termino esecuzione
		    if (menu == 5){
		    	exit = "si";
		    }
	    }	    
        }
}

Cliccando qui è possibile scaricare l’eseguibile.

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.

Ti potrebbe piacere anche

Leave a reply

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

 

Didattica

Università degli Studi eCampus
Data Evento
09/02/2021
14:30
Esame Archivistica Digitale e Informatica per le Scienze Umane - Cds Letteratura, Lingua e Cultura Italiana - Lettere
09/02/2021
14:30
Esame Introduzione all'Archivistica Digitale e all'Informatica per le Scienze Umane - Cds Letteratura, Arte, Musica e Spettacolo - Lettere
09/02/2021
17:30
Esame Abilità Informatiche e Telematiche - Cds Design e Discipline della Moda - Lettere
09/02/2021
17:30
Esame Abilità Informatiche e Telematiche - Cds Letteratura, Arte, Musica e Spettacolo - Lettere
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
×