GestioneBiblioteca.java
Created with JBuilder |
class GestioneBiblioteca {
// Attributi privati
private Libro[] elencoLibri;
private int numeroLibri;
// Costruttore
public GestioneBiblioteca(int numeroMaxLibri) {
elencoLibri = new Libro[numeroMaxLibri];
numeroLibri = 0;
}
// Aggiunta di un nuovo libro
public boolean aggiungiLibro(Libro l) {
if (numeroLibri < elencoLibri.length) {
elencoLibri[numeroLibri] = l;
++numeroLibri;
return true;
} else {
return false;
}
}
// Dismissione di un libro (tutte le copie, ricerca per titolo)
public boolean dismettiLibro(String titolo) {
for (int i = 0; i < numeroLibri; ++i) {
String titoloTrovato = elencoLibri[i].restituisciTitolo();
if (titoloTrovato.equals(titolo)) {
elencoLibri[i] = elencoLibri[numeroLibri - 1];
--numeroLibri;
return true;
}
}
return false;
}
// Ricerca di un libro per titolo
public Libro ricercaPerTitolo(String titolo) {
for (int i = 0; i < numeroLibri; ++i) {
String titoloTrovato = elencoLibri[i].restituisciTitolo();
if (titoloTrovato.equals(titolo)) {
return elencoLibri[i];
}
}
return null;
}
// Ricerca di un libro per autore (solo il primo trovato)
public Libro ricercaPerAutore(String autore) {
for (int i = 0; i < numeroLibri; ++i) {
String autoreTrovato = elencoLibri[i].restituisciAutore();
if (autoreTrovato.equals(autore)) {
return elencoLibri[i];
}
}
return null;
}
// Elenco di tutti i libri che hanno almeno un prestito scaduto
public GestioneBiblioteca ricercaLibriConPrestitiScaduti(Data oggi) {
GestioneBiblioteca libriConPrestitiScaduti =
new GestioneBiblioteca(numeroLibri);
for (int i = 0; i < numeroLibri; ++i) {
if (elencoLibri[i].calcolaNumeroPrestitiScaduti(oggi) > 0) {
libriConPrestitiScaduti.aggiungiLibro(elencoLibri[i]);
}
}
return libriConPrestitiScaduti;
}
// Elenco di tutti i prestiti in sofferenza
public Prestito[] ricercaPrestitiScaduti(Data oggi) {
// 1. Calcola il numero totale di prestiti in sofferenza
int totalePrestitiScaduti = 0;
for (int i = 0; i < numeroLibri; ++i) {
totalePrestitiScaduti +=
elencoLibri[i].calcolaNumeroPrestitiScaduti(oggi);
}
// 2. Crea un vettore per contenere i prestiti in sofferenza
Prestito[] elencoPrestitiScaduti = new Prestito[totalePrestitiScaduti];
int numeroPrestitiScaduti = 0;
for (int i = 0; i < numeroLibri; ++i) {
Prestito[] scaduti = elencoLibri[i].cercaPrestitiScaduti(oggi);
// I prestiti in sofferenza per ogni libro vanno aggiunti
// all'elenco complessivo: scaduti contiene solo i prestiti scaduti
for (int j = 0; j < scaduti.length; ++j) {
elencoPrestitiScaduti[numeroPrestitiScaduti] = scaduti[j];
++numeroPrestitiScaduti;
}
}
return elencoPrestitiScaduti;
}
// Totale del numero di libri disponibili al prestito
public int calcolaTotaleLibriDisponibili() {
int totaleLibriDisponibili = 0;
for (int i = 0; i < numeroLibri; ++i) {
totaleLibriDisponibili += elencoLibri[i].restituisciCopieDisponibili();
}
return totaleLibriDisponibili;
}
}
GestioneBiblioteca.java
Created with JBuilder |