Considerare l'esempio della gestione di una biblioteca visto a lezione.
Derivare dalla classe User la classe UserWithCard con il privilegio di poter prendere in prestito fino a tre libri.
Il programma principale dovrà essere modificato in modo da prevedere l'operazione di emissione della tessera (che ovviamente dà una tessera all'utente che la richiede. La tessera viene fornita dai punti di gestione e relativi bibliotecari (devono quindi essere modificate anche queste classi).
Analogamente dovrà essere modificato il punto di prestito in modo che l'Hashtable borrows ammetta più libri per lo stesso utente.
Nota: il modo più semplice per modificare le varie classi è sfruttare ereditarietà e polimorfismo. Derivare quindi nuove classi da quelle da modificare, ridefinire i metodi coinvolti, riscrivere quindi il main() in modo che usi le classi definite.
Considerare l'esempio della gestione di una biblioteca visto a lezione. In quell'esempio soltanto il contenuto della biblioteca veniva salvato e letto da file.
Modificare l'esempio in modo che anche la situazione prestiti sia salvata su file.
Nota: fare attenzione che la situazione dei prestiti è gestitata da LoanPoint, mentre il salvataggio del catalogo della biblioteca è fatto da Library. La biblioteca potrà avere più punti di prestito e quindi più situazioni prestiti da salvare. L'idea potrebbe essere di derivare la classe PersistentLoanPoint da LoanPoint aggiungere un metodo save(String name) che salva la situazione prestiti sul file indicato da name. I punti di prestito della biblioteca saranno tutti istanza della classe LoanPoint e provvederà a chiamare il metodo save() su ogni punto di prestito passandogli come nome di file il nome del file del database più un numero progressivo (si può usare l'algoritmo realizzato nell'esercizio 1). Discorso analogo per la lettura della situazione prestiti all'atto dell'istanziazione dei punti di prestito (le modifiche, in questo caso, riguardano i costruttori).