Laboratorio di Programmazione, A.A. 2004/2005
Esame 13/01/2005
Compito A

Parte 1

Il sistema di memorizzazione su disco del sistema operativo DGOS è basato su oggetti che si chiamano FileSystemItem; ogni FileSystemItem può essere di uno dei seguenti tipi:

File
un file normale, caratterizzato da un nome (una stringa) e una dimensione (un intero);
FileZip
un tipo particolare di File (vedi sopra) che contiene un insieme di altri FileSystemItem;
Directory
caratterizzata da un nome (una stringa); contiene un insieme di altri FileSystemItem.

Si definiscano i tipi opportuni che realizzano File, FileZip, Directory, e FileSystemItem. Per tutti gli oggetti devono essere definite l'uguaglianza profonda con equals, il metodo hashCode opportuno, e la copia profonda con clone.

Parte 2

Si definisca una classe ServiziDGFS che contiene due metodi statici void stampaFS(FileSystemItem f) che stampa tutti i file e cartelle (incluso il contenuto dei file zip) e int dimensioneFS(FileSystemItem f), che calcola la dimensione totale di tutti i file (per i file zip si calcola la dimensione del file e non del suo contenuto).

Parte 3

Si determini la complessità del metodo clone della parte 1.