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.