Java – Classe Libro/Libreria/Biblioteca
Classe Libro:
public class Libro { // attributi String titolo, genere, autore; // costruttore Libro(String titolo, String genere, String autore) { this.titolo = titolo; this.autore = autore; this.genere = genere; } // fine costruttore // costruttore di copia Libro(Libro l) { this.titolo = l.titolo; this.autore = l.autore; this.genere = l.genere; } // getters public String getTitolo() { return titolo; } public String getGenere() { return genere; } public String getAutore() { return autore; } }
Classe Libreria:
public class Libreria { // attributi public static final int NUM_MAX_VOLUMI = 20; private Libro libri[]; // costruttore Libreria() { libri = new Libro[NUM_MAX_VOLUMI]; } // costruttore copia Libreria Libreria(Libreria lib) { this.libri = new Libro[NUM_MAX_VOLUMI]; for(int i=0; i<NUM_MAX_VOLUMI; i++) { this.libri[i] = lib.getIndex(i); } // fine for } // fine costruttore copia public boolean aggiungi(Libro L) { for(int i=0; i<NUM_MAX_VOLUMI; i++) { if(libri[i] == null) { libri[i] = L; return true; } // fine if } // fine for return false; } // fine metodo public void ordina(char campo) { switch(campo) { case 't': { for(int i = 0; i < libri.length; i++) { for(int k=i+1; k<libri.length; k++) { if(libri[i].titolo.compareTo(libri[k].titolo) > 0) { Libro tmp = libri[i]; libri[i] = libri[k]; libri[k] = tmp; } // fine if } // fine for } // fine for break; } // fine case 1 case 'a': { for(int i = 0; i < libri.length; i++) { for(int k=i+1; k<libri.length; k++) { if(libri[i].autore.compareTo(libri[k].autore) > 0) { Libro tmp = libri[i]; libri[i] = libri[k]; libri[k] = tmp; } // fine if } // fine for } // fine for break; } // fine case 2 case 'g': { for(int i = 0; i < libri.length; i++) { for(int k=i+1; k<libri.length; k++) { if(libri[i].genere.compareTo(libri[k].genere) > 0) { Libro tmp = libri[i]; libri[i] = libri[k]; libri[k] = tmp; } // fine if } // fine for } // fine for break; } // fine case 3 default: { System.out.println("Errore!"); break; } } // fine switch } // fine metodo public boolean cerca(Libro l) { for(int i = 0; i < libri.length; i++) if(libri[i]==l) return true; return false; } // fine metodo int contaGenere(String genere) { int n = 0; for(int i = 0; i < libri.length; i++) if(libri[i].genere == genere) n++; return n; } // fine metodo // metodo che data la posizione dello scaffale restituisce il libro in quella posizione public Libro getIndex(int i) { if(!(i<20 && i>=0)){ System.out.println("Errore!"); return null; } // fine if Libro l = null; l = new Libro(libri[i]); return l; } // fine metodo } // fine classe
Classe Biblioteca:
public class Biblioteca { public static void main(String[] args) { Libreria l1 = new Libreria(); String t = "T"; String g = "G"; String a = "A"; // riempio vettore di libri for(int i=0; i<Libreria.NUM_MAX_VOLUMI; i++) { a += i; t += i; if(i%5 == 0) g += "5"; else g += i+1; Libro l = new Libro(t, g, a); l1.aggiungi(l); } // fine for // ordino vettore per un campo... l1.ordina('a'); // cerco libro Libro l = new Libro("T5", "G5", "A5"); l1.cerca(l); // Conto quanti libri sono dello stesso genere l1.contaGenere("G5"); } // fine main } // fine classe