class Libro { // Attributi privati private String autore; private String titolo; private String editore; private int annoPubblicazione; private int copieTotali; private int copieDisponibili; private Prestito[] elencoPrestiti; // Costruttore public Libro(String a, String t, String e, int annoPubb, int copieTot) { autore = a; titolo = t; editore = e; annoPubblicazione = annoPubb; copieTotali = copieTot; copieDisponibili = copieTot; elencoPrestiti = new Prestito[copieTot]; } // Metodi di restituzione public String restituisciAutore() { return autore; } public String restituisciTitolo() { return titolo; } public String restituisciEditore() { return editore; } public int restituisciAnnoPubblicazione() { return annoPubblicazione; } public int restituisciCopieDisponibili() { return copieDisponibili; } public int restituisciCopiePrestate() { return (copieTotali - copieDisponibili); } // Metodo per il prestito public boolean accendiPrestito(Prestito prestito) { if (copieDisponibili > 0) { int pos = restituisciCopiePrestate(); elencoPrestiti[pos] = prestito; --copieDisponibili; return true; } else { return false; } } // Metodo per la restituzione public boolean estinguiPrestito(Prestito prestito) { // 1. Cerca il prestito nell'elenco int copiePrestate = restituisciCopiePrestate(); for (int i = 0; i < copiePrestate; ++i ) { if (elencoPrestiti[i].restituisciDocumento() == prestito.restituisciDocumento()) { // 2. Trovato il prestito, cancellalo dall'elenco elencoPrestiti[i] = elencoPrestiti[copiePrestate - 1]; ++copieDisponibili; return true; } } return false; } // Metodo per il calcolo del numero di prestiti scaduti public int calcolaNumeroPrestitiScaduti(Data oggi) { int prestitiScaduti = 0; int copiePrestate = restituisciCopiePrestate(); for (int i = 0; i < copiePrestate; ++i) { if (!elencoPrestiti[i].restituito()) { Data scadenza = elencoPrestiti[i].restituisciScadenza(); if (scadenza.minoreDi(oggi)) { ++prestitiScaduti; } } } return prestitiScaduti; } // Metodo per l'individuazione dei prestiti scaduti public Prestito[] cercaPrestitiScaduti(Data oggi) { int copiePrestate = restituisciCopiePrestate(); int totaleScaduti = calcolaNumeroPrestitiScaduti(oggi); Prestito[] elencoScaduti = new Prestito[totaleScaduti]; int numeroScaduti = 0; for (int i = 0; i < copiePrestate; ++i) { if (!elencoPrestiti[i].restituito()) { Data scadenza = elencoPrestiti[i].restituisciScadenza(); if (scadenza.minoreDi(oggi)) { elencoScaduti[numeroScaduti] = elencoPrestiti[i]; ++numeroScaduti; } } } return elencoScaduti; } }