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

Parte 1

Il sistema di memorizzazione su disco del sistema operativo PLOS è 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);
FileEsteso
un tipo particolare di File che contiene un'icona (un File normale) e un altro FileSystemItem;
Directory
caratterizzata da un nome (una stringa); contiene un insieme di altri FileSystemItem.

Si definiscano i tipi opportuni che realizzano File, FileEsteso, 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 ServiziPLFS che contiene due metodi statici void stampaFS(FileSystemItem f) che stampa tutti i file e cartelle (incluso il contenuto dei file estesi) e int dimensioneFS(FileSystemItem f), che calcola la dimensione totale di tutti i file (per i file estesi si calcola la dimensione del file e non del suo contenuto).

Parte 3

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