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 viene fornita (a tutti gli utenti che la richiedono) dai punti di gestione e dai relativi bibliotecari (dovranno quindi essere modificate anche queste classi). Analogamente dovrà essere modificato il punto di prestito in modo che la hashtable borrows ammetta più libri per lo stesso utente.
Nota: il modo più semplice per modificare le varie classi è sfruttare ereditarietà e polimorfismo, derivando nuove classi da quelle da modificare, ridefinendo i metodi coinvolti e riscrivendo quindi il main in modo che usi le nuove classi.
Nota: 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 aggiungendo un metodo save(String name) che memorizza la situazione prestiti sul file indicato dall'argomento name. I punti di prestito della biblioteca saranno tutti istanze della classe PersistentLoanPoint e provvederanno a invocare il metodo save() su ogni punto di prestito passandogli come argomento il nome del file del database a cui è stato concatenato un numero progressivo. Andrà fatto un discorso analogo per la lettura della situazione prestiti all'atto della creazione dei punti di prestito (le modifiche, in questo caso, riguardano i costruttori).