public abstract class Persona { protected String nome; protected String cognome; public Persona(String nome, String cognome) { this.nome = nome; this.cognome = cognome; } public abstract void stampa(); }
public class Cliente extends Persona { private String codicefiscale; private String partitaIVA; private double reddito; public Cliente(String nome, String cognome) { super(nome, cognome); } public Cliente(String codicefiscale, String partitaIVA, double reddito, String nome, String cognome) { super(nome, cognome); this.codicefiscale = codicefiscale; this.partitaIVA = partitaIVA; this.reddito = reddito; } public String getCodicefiscale() { return codicefiscale; } public void setCodicefiscale(String codicefiscale) { this.codicefiscale = codicefiscale; } public String getPartitaIVA() { return partitaIVA; } public void setPartitaIVA(String partitaIVA) { this.partitaIVA = partitaIVA; } public double getReddito() { return reddito; } public void setReddito(double reddito) { this.reddito = reddito; } public String getNome() { return nome; } public String getCognome() { return cognome; } public double aliquota() { double ret = 23; if (reddito <= 15000) ret = 23; else if (reddito > 15000 && reddito <= 28000) ret = 27; else if (reddito > 28000 && reddito <= 55000) ret = 38; else if (reddito > 50000 && reddito <= 75000) ret = 41; else ret = 43; return ret; } public double tasse() { return (reddito/100) * aliquota(); } @Override public void stampa() { System.out.println(nome + " " + cognome + " " + reddito); } }
public class ListaClienti { private ArrayList<Cliente> lista = new ArrayList<Cliente>(); public ListaClienti() { } public ListaClienti(ArrayList<Cliente> lista) { this.lista = lista; } public int length() { return lista.size(); } public void add(Cliente c){ if (c != null) { lista.add(c); } } public Cliente getCliente(int index) { Cliente ret = null; if (index >= 0 && index < lista.size()) { ret = lista.get(index); } return ret; } public void deleteAll() { lista.clear(); } public void delete(int index) { if (index >= 0 && index < lista.size()) { lista.remove(index); } } }
public class Commercialista extends Persona { private ListaClienti lista = new ListaClienti(); public Commercialista(String nome, String cognome) { super(nome, cognome); } public String getNome() { return nome; } public String getCognome() { return cognome; } public ListaClienti getLista() { return lista; } public void setLista(ListaClienti lista) { this.lista = lista; } @Override public void stampa() { System.out.println(nome + " " + cognome); } public int numeroClienti() { return lista.length(); } public void aggiungiCliente(Cliente c) { lista.add(c); } public void eliminaCliente(int index) { lista.delete(index); } /** * Calcola il reddito medio dei clienti del commercialista * @return reddito medio dei clienti */ public double mediaRedditi() { double ret = 0; for(int i=0; i<lista.length(); i++) { ret = ret + lista.getCliente(i).getReddito(); } ret = ret/lista.length(); return ret; } /** * Restituisce elenco dei clienti che hanno l'aliquota * data come parametro * @param aliquota da ricercare * @return elenco dei clienti che hanno l'aliquota data come parametro */ public ArrayList<Cliente> clientiAliquota(double aliquota) { ArrayList<Cliente> ret = new ArrayList<Cliente>(); for(int i=0; i<lista.length(); i++) { if (lista.getCliente(i).aliquota() == aliquota) { ret.add(lista.getCliente(i)); } } return ret; } }