Fondamenti di Informatica 1
Corso di Laurea in Ingegneria Informatica
Corso di Laurea in Ingegneria Automatica
A.A. 2002/03
Appello del 8/4/2003 - Compito A
Si vuole gestire il prestito di libri in una biblioteca. Di un oggetto
Biblioteca sono di interesse il nome della biblioteca stessa (una
stringa) e l'insieme dei suoi libri. Di ogni libro sono di interesse le
seguenti informazioni:
- il titolo (una stringa);
- se è in prestito oppure no, e nel caso lo sia, il nominativo della
persona che lo ha preso in prestito.
Gli oggetti Biblioteca supportano le seguenti funzionalità:
- crea: che, data una stringa b che rappresenta il nome
di una biblioteca, crea un oggetto Biblioteca con nome
b che inizialmente non ha alcun libro;
- nome: che restituisce il nome della biblioteca;
- dellaBiblioteca: che, dato il titolo t di un libro,
restituisce true se il libro t è uno dei libri
della biblioteca, false altrimenti;
- inPrestito: che, dato il titolo t di un libro,
restituisce il nominativo della persona che ha preso in prestito il libro
t, se il libro è in prestito; restituisce
null
se il libro non è in prestito; infine, lancia
un'eccezione se il libro non è della biblioteca;
- aggiungi: che, dato il titolo t di un libro,
aggiunge il libro t a quelli della biblioteca, se questo non
è già della biblioteca; altrimenti lancia un'eccezione; si
noti che un libro appena aggiunto non è in prestito;
- elimina: che, dato il titolo t di un libro, elimina il
libro t da quelli della biblioteca; se il libro t non
è della biblioteca non fa nulla; se il libro t è
della biblioteca ma è in prestito lancia un'eccezione;
- presta: che, dati il titolo t di un libro e il
nominativo p di una persona, presta il libro t alla
persona p; se il libro non è della biblioteca oppure
è già in prestito lancia un'eccezione;
- numLibriPrestati: che, dato il nominativo p di una
persona, restituisce il numero di libri che la persona p ha in
prestito;
- libriPrestati: che, dato il nominativo p di una
persona, restituisce un array di stringhe contenente i titoli dei libri
che la persona p ha in prestito.
Domanda 1. Scrivere una classe Java Biblioteca
per rappresentare oggetti Biblioteca.
Soluzione:
rappresentazione
degli oggetti,
scheletro della classe,
classe Biblioteca
,
classe
EccezioneBiblioteca
Domanda 2. Realizzare un metodo statico
libriPrestati
cliente della classe Biblioteca
che,
dati
- un oggetto bib della classe
Biblioteca
,
- il nome fin di un file contenente nominativi di persone, uno per
riga, ed
- il nome fout di un file,
scrive sul file fout, uno per riga, i titoli di tutti i libri di
bib in prestito a ciascuna persone il cui nominativo è presente
nel file fin.
Soluzione
Domanda 3. Spiegare la rappresentazione collegata di alberi
binari in cui l'informazione in ciascun nodo è un intero. Spiegare
l'algoritmo di visita (ricorsiva) in preordine di alberi binari. Facendo uso
della rappresentazione collegata, realizzare un metodo statico pubblico che,
dati un intero n ed il riferimento alla radice di un albero binario
alb i cui nodi contengono interi, restituisca il numero di occorrenze
di interi minori di n in alb.
Soluzione:
rappresentazione di alberi binari,
metodo richiesto