LABORATORIO DI PROGRAMMAZIONE DI STRUTTURE DATI
ESERCIZI SU EREDITARIETÀ --- GRUPPO 2
6 Marzo 2002

Esercizio 1

Si scriva una classe Lavoratore le cui istanze rappresentano lavoratori. Ogni lavoratore è caratterizzato da un nome, un livello ed uno stipendio (mensile). La classe deve contenere una variabile di istanza di tipo stringa nome e due variabili di istanza intere, livello e stipendio, un costruttore che assegna al lavoratore un numero ed un livello specificati, ed un metodo stampaStipendio() che stampa lo stipendio del lavoratore. 
Scrivere quindi una classe LavoratoreConStraordinariPagati che estende la classe Lavoratore. La classe deve contenere una nuova variabile di istanza, oreStraordinario, un costruttore che assegna al lavoratore con straordinari pagati un nome, un livello e un numero di ore di straordinario specificati, un metodo stampaStraordinari() che stampa un messaggio contenente il numero di ore di straordinario. La classe deve inoltre contenere una variabile statica reale retribuzioneOraria, inizializzata a 10.0, corrispondente alla retribuzione di un'ora di straordinario (che si suppone uguale per tutti). La classe deve inoltre ridefinire il metodo stampaStipendio() per tenere conto della retribuzione delle ore di straordinario: alla retribuzione base (ereditata da Lavoratore) va sommata la retribuzione degli straordinari, ottenuta come retribuzione oraria dello straordinario per numero di ore di straordinario effettuate.  
Scrivere infine un programma di prova per collaudare le classi e i metodi.

Soluzione

Esercizio 2

Implementate una classe Triangle che estenda la classe Polygon. Nel costruttore, dovete ricevere le coordinate x e y dei tre vertici del triangolo (si cerchi, se possibile, di riutilizzare un costruttore della superclasse). Ridefinite il metodo addPoint in modo che non modifichi il triangolo e stampi il messaggio "Non e' possibile aggiungere un vertice ad un triangolo". 
Scrivete quindi un programma che chieda all'utente le coordinate dei vertici del triangolo, crei il triangolo corrispondente, chieda all'utente le coordinate di un punto, provi ad aggiungere tale punto come vertice del triangolo, e infine verifichi se il punto e' contenuto nel triangolo (mediante il metodo contains che ereditate da Polygon), stampando in caso affermativo un opportuno messaggio.

Soluzione

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.

Soluzione

Esercizio 4

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