Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
05/12/2013
Progetto
Biblioteca
1
Casagrande Marco 4^A I.T.I. 05/12/2013
Sommario
Introduzione ..................................................... 3
Cenni teorici .................................................... 4
Gestione dell'input/output predefinito ............................... 4
Serializzazione degli oggetti su file ................................ 5
Ereditariet ......................................................... 6
Overloading ............................................................... 6
Overriding ................................................................ 6
Upcasting ................................................................. 6
Downcasting ............................................................... 6
Programma progettoBiblioteca ..................................... 7
Main ................................................................. 8
manu ...................................................................... 8
pause ..................................................................... 8
clear ..................................................................... 8
main ...................................................................... 8
Libro ............................................................... 10
Libro .................................................................... 10
getISBN .................................................................. 10
getAutore ................................................................ 10
visualizza ............................................................... 10
acquisisci ............................................................... 10
Data ................................................................ 12
Data ..................................................................... 12
visualizza ............................................................... 12
acquisisci ............................................................... 12
LibroScolastico ..................................................... 14
LibroScolastico .......................................................... 14
visualizza ............................................................... 14
acquisisci ............................................................... 14
Biblioteca .......................................................... 16
Biblioteca ............................................................... 16
inserimento .............................................................. 16
cercaLibro ............................................................... 16
eliminazione ............................................................. 16
visualizzaPreISBN ........................................................ 17
visualizzaPreAutore ...................................................... 17
visualizzaTutti .......................................................... 17
salvaSuFile .............................................................. 17
leggiDaFile .............................................................. 17
Conclusioni ..................................................... 19
2
Casagrande Marco 4^A I.T.I. 05/12/2013
Introduzione
Nella seguente relazione verr descritto il funzionamento del
programma in linguaggio java progettoBiblioteca. Tale programma
fornisce all'utente la possibilit di memorizzare in una struttura
dati i propri libro, i libri possono essere normali o libri
scolastici.
Seguiranno:
1) I cenni teorici per la realizzazione del programma
2) Analisi del programma e delle classi che lo compongono
(Sommario)
3
Casagrande Marco 4^A I.T.I. 05/12/2013
Cenni teorici
Gestione dell'input/output predefinito
Nel linguaggio di programmazione Java possibile visualizzare le
nostre variabili sullo standart output di sistema (finestra
testuale sullo schermo). Per fare cio si utilizza l'istruzione
System.out.print("...");
L'oggetto System.out un oggetto predefinito della classe
PrintStream che dispone di vari metodi come il println (che
accetta come parametro una stringa o un dato primitivo) o il print
(che a differenza del println non effettua il vai a capo dopo la
visualizzazione del parametro).
Per l'input da tastiera esiste invece l'oggetto System.in della
classe InputStream che associato allo standart input (la
tastiera). Tuttavia, data la complessit delle operazioni di
input, necessario incapsulare l'oggetto System.in in un oggetto
di classe BufferedReader:
BufferedReader tastiera=new BufferedReader(new InputStreamRead(Sytem.in);
Ora possiamo utilizzare il metodo readLine dell'oggetto tastiera
che ritorna una stringa che noi abbiamo inserito da tastiera (nel
caso in cui vogliamo leggere da tastiera un intero dovremmo usare
i metodi di conversione statico della classe Integer parseInt sul
valore ritornato da readLine). L'istruzione readLine deve
necessariamente essere inserita all'interno del costrutto
try/catch:
try {
s = tastiera.readLine();
}
catch(java.io.IOEXCEPTION e){...}
fatto questo saremmo in grado di gestire eventuali errori di I/O.
(Sommario)
4
Casagrande Marco 4^A I.T.I. 05/12/2013
5
Casagrande Marco 4^A I.T.I. 05/12/2013
Ereditariet
L'ereditariet un meccanismo di astrazione finalizzato alla
creazione di gerarchie di classi. L'estensione di una classe
possibile con il comando extends. La classe che viene estesa
detta superclasse. In java possibile estendere una sottoclasse
da una sola superclasse (non possibile l'ereditariet multipla).
Una sorta di ereditariet multipla possibile estendendo pi
interfacce (classi contenenti solo metodi astratti, ossia vuoti)
con il comando implements. anche possibile estendere una classe
da una sola superclasse e da una o pi interfacce.
(Sommario)
Overloading
La tecnica di overloading ci permette di denifire pi metodo con
lo stesso nome all'interno della stessa classe a patto che
differiscano nella firma per numero e tipo dei parametri
specificati. Sar il compilatore, in base ai parametri che
passiamo al costruttore, che richiamer quello giusto.
(Sommario)
Overriding
La tecnica di overridding permette di ridefinire metodi gi
esistenti nella superclasse.
(Sommario)
Upcasting
In java, in una gerarchia di classi, possibile effettuare il
casting di un oggetto di una sottoclasse in un oggetto della
superclasse (avviene ad esempio nella serializzazione, dove
avviene il casting di un oggetto di una classe in un oggetto della
superclasse Object).
(Sommario)
Downcasting
In java, in una gerarchia di classi, possibile effettuare il
casting di un oggetto di una superclasse in un oggetto della
sottoclasse (avviene ad esempio nella deserializzazione, dove
avviene il casting di un oggetto della superclasse Object in un
oggetto di una sua sottoclasse). L'operazione di downcasting
consentita dal compilatore ma genera un errore run-time e dovremmo
gestire l'eccezione ClassCastException.
(Sommario)
6
Casagrande Marco 4^A I.T.I. 05/12/2013
Programma progettoBiblioteca
(Sommario)
7
Casagrande Marco 4^A I.T.I. 05/12/2013
Main
manu
Il metodo menu un metodo pubblico, statico della classe main il
quale come parametro accetta un vettore di String. Il metodo
visualizza le stringa una di seguito all'altra e acquisisce un
intero da tastiera e lo ritorna.
(Sommario)
pause
Il metodo pause un metodo pubblico, statico della classe main il
quale stampa a video il messaggio: "Premi invio..." e attende che
l'utente prema invio. Questo metodo serve a interrompere
momentaneamente il programma per far si che i messaggi a video
vengano correttamente letti dall'utente.
(Sommario)
clear
Il metodo clear un metodo pubblico, statico della classe main il
quale stampa a video 50 vai a capo. Questo metodo serve a ripulire
la finestra testuale.
(Sommario)
main
Il metodo main un metodo pubblico, statico della classe main. Il
metodo main il metodo che gestisce l'intero programma. Nel main
viene instanziato l'oggetto della classe Biblioteca e viene
richiamato il metodo menu. In base al valore dell'intero ritornato
dal menu (e di conseguenza alla scelta dell'utente) verranno
richiamati i vari metodi della classe Biblioteca. Dopo la
visualizzazione di ogni messaggio derivante dall'invocazione dei
metodi della classe Biblioteca viene richiamato il metodo pause e
successivamente il metodo clear. Dopo di che verr nuovamente
visualizzato il men. Prima del termine del programma il vettore
contenente i libri verr salvato su file con il metodo
salvaSuFile.
(Sommario)
8
Casagrande Marco 4^A I.T.I. 05/12/2013
(Sommario)
9
Casagrande Marco 4^A I.T.I. 05/12/2013
Libro
La classe Libro la classe atta ad acquisire un libro che verr
poi memorizzato nella biblioteca. Ha come attributi l'ISBN del
libro, il titolo, l'autore, il numero di pagine, il prezzo, la
collocazione e la data di pubblicazione.
(Sommario)
Libro
La classe Libro ha due costruttore, un costruttore vuoto e un
costruttore a cui vengono passati i parametri necessari a
inizializzare tutti gli attributi (inizializza il prezzo a 0 se il
parametro passato minore di 0 e il numero di pagine a 1 se il
parametro passato minore di 1).
(Sommario)
getISBN
Il metodo getISBN un metodo pubblico della classe Libro che
restituisce l'attributo ISBN del libro.
(Sommario)
getAutore
Il metodo getAutore un metodo pubblico della classe Libro che
restituisce l'attributo ISBN del libro.
(Sommario)
visualizza
Il metodo visualizza un metodo pubblico della classe Libro che
visualizza riga per riga gli attributi della classe secondo il
formato (per l'attributo di tipo Data viene richiamato il metodo
visualizza della classe Data):
Titolo: titolo1
Autore: autore1
...
(Sommario)
acquisisci
Il metodo acquisisci un metodo pubblico della classe Libro che
setta tutti gli attributi della classe acquisendo i valori da
tastiera.
(Sommario)
10
Casagrande Marco 4^A I.T.I. 05/12/2013
(Sommario)
11
Casagrande Marco 4^A I.T.I. 05/12/2013
Data
La classe Data costruisce la data che verr richiamata nella
classe Libro e LibroScolastico.
(Sommario)
Data
La classe Libro ha due costruttore, un costruttore vuoto e un
costruttore a cui vengono passati i parametri necessari a
inizializzare tutti gli attributi (inizializza l'attributo giorno
a 1 se il parametro passato minore di 1 e a 31 se il parametro
maggiore di 31).
(Sommario)
visualizza
Il metodo visualizza un metodo pubblico della classe Data che
visualizza riga per riga gli attributi della classe secondo il
formato:
31/gennaio/2013
(Sommario)
acquisisci
Il metodo acquisisci un metodo pubblico della classe Data che
setta tutti gli attributi della classe acquisendo i valori da
tastiera.
(Sommario)
12
Casagrande Marco 4^A I.T.I. 05/12/2013
(Sommario)
13
Casagrande Marco 4^A I.T.I. 05/12/2013
LibroScolastico
La classe LibroScolastico la classe atta ad acquisire un libro
scolastico che verr poi memorizzato nella biblioteca. una
classe derivata dalla classe Libro, e ne aggiunge gli attributi
materia e ordine (elementari, superiori,...). Ridefinisce il
metodo visualizza e acquisisci.
(Sommario)
LibroScolastico
La classe LibroScolastico ha due costruttore, un costruttore vuoto
e un costruttore a cui vengono passati i parametri necessari a
inizializzare tutti gli attributi (validando il prezzo positivo e
il numero di pagine maggiore di uno). Il costruttore per
l'inizializzazione degli attributi comune a Libro richiama il
costruttore della superclasse.
(Sommario)
visualizza
Il metodo visualizza ridefinisce il metodo visualizza della
superclasse. Al suo interno viene richiamato il metodo visualizza
della classe Libro e vengono stampati a video a anche gli
attributi materia e ordine.
(Sommario)
acquisisci
Il metodo acquisisci ridefinisce il metodo acquisisci della
superclasse. Al suo interno viene richiamato il metodo acquisisci
della classe Libro e vengono acquisiti anche la materia e
l'ordine.
(Sommario)
14
Casagrande Marco 4^A I.T.I. 05/12/2013
(Sommario)
15
Casagrande Marco 4^A I.T.I. 05/12/2013
Biblioteca
La classe Biblioteca la classe atta a memorizzare i libri che
vengono inseriti. Permette inoltre di eliminarli, visualizzarli,
salvarli su file e leggerli da un file.
(Sommario)
Biblioteca
Il costruttore della classe Biblioteca accetta un parametro di
tipo String che contiene il percorso del file da cui verr
caricato l'attributo di tipo Vector contente i libri acquisiti
(oggetti Libro e LibroScolastico) ordinati in modo crescente in
base all'attributo ISBN. Il costruttore appunto inizializza il
Vector grazie al metodo leggiDaFile gli viene assegnato l'oggetto
letto.
(Sommario)
inserimento
Il metodo inserimento un metodo pubblico della classe
Biblioteca. Questo metodo accetta come parametro un oggetto della
classe Libro e passa il suo ISBN al metodo cerca, e in base al
valore da esso restituito inserir il libro nel Vector in ordine
crescente in base all'ISBN oppure no. Il metodo ritorna la
posizione pi uno negativa in cui stato inserito il libro,
oppure la posizione pi uno se il libro non stato inserito e
quindi gi presente nel Vector.
(Sommario)
cercaLibro
Il metodo cercaLibro un metodo pubblico della classe Biblioteca.
Questo metodo accetta come parametro una variabile di tipo String
che corrisponde all'ISBN del libro da cercare. Se il libro gi
presente nel Vector restituir un intero corrispondente alla
posizione pi uno in cui il libro presente nel Vector,
altrimenti restituisce la posizione pi uno negativa in cui il
libro dovrebbe essere inserito (rispettando l'ordine crescente
degli ISBN dei libri presenti).
(Sommario)
eliminazione
Il metodo eliminazione un metodo pubblico della classe
Biblioteca. Questo metodo accetta come parametro una variabile di
tipo String che corrisponde all'ISBN del libro da eliminare.
Questo parametro viene passato al metodo cercaLibro. Se il libro
presente verr eliminato e il metodo restituir true, altrimenti
non verr effettuata nessuna operazione e restituir false.
(Sommario)
16
Casagrande Marco 4^A I.T.I. 05/12/2013
visualizzaPreISBN
Il metodo visualizzaPreISBN un metodo pubblico della classe
Biblioteca. Questo metodo accetta come parametro una variabile di
tipo String che corrisponde all'ISBN del libro da visualizzare.
Questo parametro viene passato al metodo cercaLibro. Se il libro
presente viene visualizzato.
(Sommario)
visualizzaPreAutore
Il metodo visualizzaPreAutore un metodo pubblico della classe
Biblioteca. Questo metodo accetta come parametro una variabile di
tipo String che corrisponde all'autore del libro da visualizzare.
Questo metodo visualizza tutti i libro dell'autore passato al
metodo.
(Sommario)
visualizzaTutti
Il metodo visualizzaTutti un metodo pubblico della classe
Biblioteca. Questo metodo visualizza tutti i libro presenti nel
Vector.
(Sommario)
salvaSuFile
Il metodo salvaSuFile un metodo pubblico della classe
Biblioteca. Questo metodo serializza l'attributo di tipo Vector
della classe Biblioteca, contenente tutti i libri inseriti, in un
file (il nome del file stato passato al costruttore della classe
Biblioteca).
(Sommario)
leggiDaFile
Il metodo leggiDaFile un metodo pubblico della classe
Biblioteca. Questo metodo deserializza l'attributo di tipo Vector
della classe Biblioteca da un file (il nome del file stato
passato al costruttore della classe Biblioteca), cos da caricare
tutti i libri precedentemente salvati.
(Sommario)
17
Casagrande Marco 4^A I.T.I. 05/12/2013
18
Casagrande Marco 4^A I.T.I. 05/12/2013
Conclusioni
La risoluzione del programma non stata molto impegnativa, una
volta acquisita padronanza con la classe Vector. Tale classe la
pi utilizzata in tutto il programma ed grazie ad essa se
possiamo memorizzare i libri che acquisiamo e di conseguenza tutte
le operazioni proposte all'utente vengono eseguite sul Vector (a
parte l'acquisizione del libro). Di conseguenza una volta risolte
le problematica relativa alla ricerca del libro nel vettore,
all'inserimento di esso e alla sua eliminazione gli altri metodi
non richiedevano molto sforzo.
Il lavoro svolto servito a capire e superare le problematiche
dell'acquisizione di un valore da tastiera, e del salvataggio di
oggetti in strutture dati apposite.
19
Casagrande Marco 4^A I.T.I. 05/12/2013
20