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.