Programmazione a oggetti 07.04.2005 ESERCIZIO 1 C++ (punti 17

Programmazione a oggetti
07.04.2005
_________________________________________________________________________________________________
ESERCIZIO 1 C++ (punti 17)
Nell’ambito di un sistema software per osservazioni astronomiche si rende necessario progettare classi che modellano i
corpi celesti e le costellazioni. E’ necessario modellare una classe astratta Corpo_celeste, caratterizzata dalle
coordinate celesti (due float), dalla distanza dalla Terra e dalla luminosità apparente, che abbia metodi per descrivere il
corpo celeste (esempio: Nome(), Tipo(), etc. ) e per stamparne i dati. E’ necessario modellare anche una classe
Costellazione, caratterizzata da un nome e da un insieme di corpi celesti.
Svolgere i seguenti esercizi:
1) Progettare le classi necessarie per modellare la situazione sopra descritta ed almeno due classi derivate da
Corpo_celeste per modellare stelle, galassie, quasar etc.
2) Scrivere il codice dei metodi che si ritengono necessari per una classe ElencoCostellazioni che abbia
come unico attributo una lista di puntatori a Costellazioni. Tra i metodi, inserirne uno per il calcolo del
corpo celeste più distante dalla Terra presente nell’elenco delle costellazioni.
3) Scrivere una procedura che, ricevendo in ingresso un oggetto della classe ElencoCostellazioni e una lista
di corpi celesti, stampi per ciascun corpo celeste presente in almeno una costellazione dell’elenco i dati relativi e la
costellazione di appartenenza.
_________________________________________________________________________________________________
ESERCIZIO 2 Java (punti 6)
Progettare in Java, in riferimento all’esercizio precedente, le classi Corpo_celeste, Stella e Galassia.
_________________________________________________________________________________________________
ESERCIZIO 3 (punti 5)
Progettare una classe generica in C++ per gestire triple di elementi di cui non è noto il tipo a priori.
_________________________________________________________________________________________________
ESERCIZIO 4 (punti 2)
Dire se è vera o falsa la seguente affermazione e motivare la risposta:
“In Java non esistono metodi virtual come in C++, quindi il polimorfismo non è attuabile”.
Scrivere in modo leggibile. Riportare solo la propria matricola su tutti i fogli (non indicare il nome né il cognome).
Consegnare sia fogli di brutta che di bella copia (distinguendo opportunamente gli uni dagli altri). Numerare i fogli di
bella secondo l’ordine in cui dovranno essere letti dal docente.
Per chi ha sostenuto il parziale. Indicare sul compito che si vuole mantenere il voto del parziale e svolgere solo gli esercizi
2, 3 e 4.