04.06.2008 | 22:12:22
immagine
Ing. Emanuele Scapin

Java, es7, Persona, Cliente, ListaClienti, Commercialista.
Proposta di correzione del compito della 4D del 26/04/2017.
  • 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;
        }
    }
            

© Emanuele Scapin 2009-2018

 

Valid HTML 4.01! Valid CSS!