class Evento { // Attributi private Partecipante[] elencoPartecipanti; private int numeroPartecipanti; private String nome; private String luogo; private double quota; private double costoTotale; private int durata; // durata in giorni // Costruttore (è prevista una capienza massima per ogni evento) public Evento(int numeroMaxPartecipanti, String nome, String luogo, double quota, double costoTotale, int durata) { elencoPartecipanti = new Partecipante[numeroMaxPartecipanti]; numeroPartecipanti = 0; this.nome = nome; this.luogo = luogo; this.quota = quota; this.costoTotale = costoTotale; this.durata = durata; } // Metodi di restituzione public String restituisciNome() { return nome; } public String restituisciLuogo() { return luogo; } public double restituisciQuota() { return quota; } public double restituisciCostoTotale() { return costoTotale; } public int restituisciDurata() { return durata; } public int restituisciNumeroPartecipanti() { return numeroPartecipanti; } // Aggiunta, rimozione e ricerca di un partecipante public boolean iscrivi(Partecipante p) { if (numeroPartecipanti < elencoPartecipanti.length) { elencoPartecipanti[numeroPartecipanti] = p; ++numeroPartecipanti; return true; } else { return false; } } public boolean ritira(String nome, String cognome) { int posizione = cercaPosizione(nome, cognome); if (posizione >= 0) { elencoPartecipanti[posizione] = elencoPartecipanti[numeroPartecipanti - 1]; elencoPartecipanti[numeroPartecipanti - 1]= null; --numeroPartecipanti; return true; } else { return false; } } public Partecipante cerca(String nome, String cognome) { int posizione = cercaPosizione(nome, cognome); if (posizione >= 0) { return elencoPartecipanti[posizione]; } else { return null; } } // Calcolo del numero di partecipanti per metodo di pagamento public int calcolaNumeroPerMetodoPagamento(int metodo) { int totale = 0; for (int i = 0; i < numeroPartecipanti; ++i) { if (elencoPartecipanti[i].restituisciMetodoPagamento() == metodo) { ++totale; } } return totale; } // Calcolo ed elenco del numero di partecipanti morosi public int calcolaNumeroMorosi() { int totale = 0; for (int i = 0; i < numeroPartecipanti; ++i) { if (elencoPartecipanti[i].restituisciQuotaVersata() < quota) { ++totale; } } return totale; } public Partecipante[] elencoMorosi() { Partecipante[] elenco = new Partecipante[numeroPartecipanti]; int j = 0; for (int i = 0; i < numeroPartecipanti; ++i) { if (elencoPartecipanti[i].restituisciQuotaVersata() < quota) { elenco[j++] = elencoPartecipanti[i]; } } return elenco; } // Metodo per il calcolo del totale delle quote versate public double calcolaQuoteVersate() { double totale = 0; for (int i = 0; i < numeroPartecipanti; ++i) { totale += elencoPartecipanti[i].restituisciQuotaVersata(); } return totale; } // Metodo privato per la ricerca private int cercaPosizione(String nome, String cognome) { for (int i = 0; i < numeroPartecipanti; ++i) { if (nome.equals(elencoPartecipanti[i].restituisciNome()) && cognome.equals(elencoPartecipanti[i].restituisciCognome())) { return i; } } return -1; } }