Evento.java
Created with JBuilder
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;
  }

}

Evento.java
Created with JBuilder