Sei sulla pagina 1di 20

Casagrande Marco 4^A I.T.I.

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

Serializzazione degli oggetti su file


La serializzazione di un oggetto ci permette di salvarlo in un
supporto di memorizzazione sequenziale (come un file). La
serializzazione salva l'intero stato dell'oggetto in modo che in
seguito possa essere ricreato nello stesso stato in cui era quando
stato salvato, questo processo chiamato deserializzazione. Il
processo di serializzazione avviene creando un oggetto della
classe FileOutputStream, a cui viene passato il nome del file su
cui scrivere il file, e poi incapsulato in un oggetto della classe
ObjectOutputStram, il quale ci offre il metodo writeObject, che ci
permette di scrivere sul file un oggetto.
ObjectOutputStream out =
new ObjectOutputStream(new FileOutputStream("file.dat"));
try{
out.writeObject(vetBiblioteca);
out.close();
}
catch(FileNotFoundException e){...}
catch(IOException e){...}
Il processo di deserializzazione dell'oggetto dal file analogo
ma l'oggetto utilizzato della classe FileInputStream incapsulato
nell'oggetto della classe ObjectInputStream, il quale ci offre il
metodo readObject che ritorna un oggetto della classe Object e di
conseguenza dovremmo effettuare un casting al tipo di oggetto a
cui lo si assegna. Sia la serializzazione che la deserializzazione
vanno inserite nel costrutto try/catch. In tutti e due i casi al
termina delle operazioni sul file l'oggetto della classe
ObjectOutputStram/ObjectInputStream va chiuso con il medoto close.
ObjectInputStream in =
new ObjectInputStream(new FileInputStream("file.dat"));
try{
vetBiblioteca = (Vector)in.readObject();
in.close();
}
catch(FileNotFoundException e){...}
catch(IOException e){...}
catch(ClassNotFoundException e){...}
(Sommario)

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

UML programma progettoBiblioteca 1

(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

UML classe Main 1

(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

UML classe Libro 1

(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

UML classe Data 1

(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

UML classe LibroScolastico 1

(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

UML classe Biblioteca 1


(Sommario)

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

INDICE DELLA FIGURE


UML PROGRAMMA PROGETTOBIBLIOTECA 1 ............................................ 7

UML CLASSE MAIN 1 ............................................................. 9

UML CLASSE LIBRO 1 ........................................................... 11

UML CLASSE DATA 1 ............................................................ 13

UML CLASSE LIBROSCOLASTICO 1 ................................................. 15

UML CLASSE BIBLIOTECA 1 ...................................................... 18

20

Potrebbero piacerti anche