LABORATORIO DI PROGRAMMAZIONE DI STRUTTURE DATI
ESERCIZI SU EREDITARIETÀ --- GRUPPO 1
4 Marzo 2002

Risolvere i problemi elencati sotto NELL'ORDINE IN CUI SONO ELENCATI. Non si richiede di scrivere TUTTI  i programmi, ma quelli risolti devono compilare correttamente e produrre i risultati richiesti.

Alla fine dell'esercitazione, copiare tutti i file prodotti in una cartella identificata dai cognomi dei componenti del gruppo, sotto serverPu/Esercizi/Lez0403

Siete invitati a completare (alcuni de)gli esercizi fuori dall'orario di esercitazione, soprattutto se avete trovato serie difficoltà a svolgerli. Potete mandare l'eventuale completamento all'indirizzo guerrini@disi.unige.it
 

Esercizio 1

Si scriva una classe Libro le cui istanze rappresentano libri. Ogni libro è caratterizzato dal numero di pagine. La classe deve contenere una variabile di istanza intera, numPagine, un costruttore che assegna al libro un numero specificato di pagine, ed un metodo pageMessage() che stampa il numero di pagine del libro. 
Scrivere quindi una classe Vocabolario che estende la classe Libro. La classe deve contenere una nuova variabile di istanza, numDefinizioni, un costruttore che assegna al vocabolario un numero di pagine e un numero di definizioni specificati, ed un metodo definitionMessage() che stampa un messaggio contenente il numero di pagine, il numero di definizioni ed il numero medio di definizioni per pagina del vocabolario. 
Scrivere infine un programma di prova per collaudare le classi e i metodi.

Esercizio 2

Implementate una classe Square che estenda la classe Rectangle. Nel costruttore, dovete ricevere le coordinate x e y del vertice superiore sinistro, e la lunghezza del lato del quadrato: per inizializzare le variabili di istanza potete invocare un opportuno costruttore della superclasse, oppure chiamate i metodi setLocation e setSize della classe Rectangle (cercateli nella documentazione di questa classe). Fornite anche un metodo getArea per calcolare e restituire l'area del quadrato. 
Scrivete quindi un programma che chieda all'utente le coordinate del centro e la lunghezza del lato del quadrato, e quindi stampi il quadrato (mediante il metodo toString che ereditate da Rectangle) e la sua area.

Esercizio 3

Scrivete una gerarchia che mostri l'ereditarietà per le classi Quadrilatero, Trapezio, Parallelogramma, Rettangolo e Quadrato. Utilizzate Quadrilatero come superclasse della gerarchia. Rendete la gerarchia profonda il più possibile. Scrivete un programma di esempio che istanzia e visualizza gli oggetti di tutte queste classi.

Esercizio 4

Rivedere la classe OrientedPoint dell'esercitazione precedente in modo da utilizzare super ovunque possibile.