-
Classe astratta Persona, classe predefinita.
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();
}
-
Classe Cliente, classe derivata dalla classe Persona, implementa il costruttore (con parametri nome e cognome) e il metodo stampa.
Implementa inoltre i metodi getNome e getCognome per permettere di leggere questi dati ereditati da Persona.
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);
}
}
-
Classe ListaClienti che gestisce un ArrayList di oggetti di tipo Cliente (ArrayList<Cliente>).
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);
}
}
}
-
Classe Coomercialista, anche il commercialista è una persona, quindi deriva anch'essa dalla classe Persona, gestisce una lista di clienti.
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;
}
}