GestioneSpedizioni.java
Created with JBuilder
class GestioneSpedizioni {
  private Spedizione[] elencoSpedizioni;
  private int          numeroSpedizioni;
  private int          posizioneCorrente;

  public GestioneSpedizioni(int numeroMaxSpedizioni) {
    elencoSpedizioni = new Spedizione[numeroMaxSpedizioni];
    numeroSpedizioni = 0;
  }

  public boolean presaInCarico(Spedizione s) {
    if (numeroSpedizioni < elencoSpedizioni.length) {
      elencoSpedizioni[numeroSpedizioni] = s;
      ++numeroSpedizioni;
      return true;
    } else {
      return false;
    }
  }

  public Spedizione consegnaEffettuata(long codice) {
    Spedizione risultato = null;
    int posizione = cercaPerCodiceInterno(codice);
    if (posizione > 0) {
      risultato = elencoSpedizioni[posizione];
      elencoSpedizioni[posizione] = elencoSpedizioni[numeroSpedizioni - 1];
      elencoSpedizioni[numeroSpedizioni - 1] = null;
      --numeroSpedizioni;
    }
    return risultato;
  }

  public Spedizione cercaPerCodice(long codice) {
    int posizione = cercaPerCodiceInterno(codice);
    if (posizione < 0) {
      return null;
    } else {
      return elencoSpedizioni[posizione];
    }
  }

  public GestioneSpedizioni cercaSpedizioniPerCittą(String cittą) {
    GestioneSpedizioni estratto = new GestioneSpedizioni(numeroSpedizioni);
    for (int i = 0; i < numeroSpedizioni; i++) {
      String cittąTrovata =
        elencoSpedizioni[i].restituisciDestinatario().restituisciCittą();
      if (cittąTrovata.equals(cittą)) {
        estratto.presaInCarico(elencoSpedizioni[i]);
      }
    }
    return estratto;
  }

  public GestioneSpedizioni cercaSpedizioniStessaData(int giorno, int mese) {
    GestioneSpedizioni estratto = new GestioneSpedizioni(numeroSpedizioni);
    for (int i = 0; i < numeroSpedizioni; i++) {
      Spedizione s = elencoSpedizioni[i];
      if ((s.restituisciGiorno() == giorno) &&
          (s.restituisciMese() == mese)) {
        estratto.presaInCarico(elencoSpedizioni[i]);
      }
    }
    return estratto;
  }

  public GestioneSpedizioni cercaSpedizioniScadute(int giorno, int mese) {
    GestioneSpedizioni estratto = new GestioneSpedizioni(numeroSpedizioni);
    int giorni = mese * 30 + giorno;
    for (int i = 0; i < numeroSpedizioni; i++) {
      Spedizione s = elencoSpedizioni[i];
      int giorniSpedizione = s.restituisciMese() * 30 + s.restituisciGiorno();
      if ((giorniSpedizione + 10) < giorni) {
        estratto.presaInCarico(elencoSpedizioni[i]);
      }
    }
    return estratto;
  }

  public Spedizione inizio() {
    posizioneCorrente = 0;
    if (posizioneCorrente < numeroSpedizioni) {
      return elencoSpedizioni[posizioneCorrente];
    } else {
      return null;
    }
  }
  public Spedizione fine() {
    return null;
  }
  public Spedizione prossima() {
    ++posizioneCorrente;
    if (posizioneCorrente < numeroSpedizioni) {
      return elencoSpedizioni[posizioneCorrente];
    } else {
      return null;
    }
  }

  private int cercaPerCodiceInterno(long codice) {
    for(int i = 0; i < numeroSpedizioni; i++) {
      if (elencoSpedizioni[i].restituisciCodice() == codice) {
        return i;
      }
    }
    return -1;
  }



}

GestioneSpedizioni.java
Created with JBuilder