Laboratorio di Calcolo II AA 2003/04
1. Definire ed Implementare la classe Sonda (Sonda.h e Sonda.cc) secondo lo schema discusso nella lezione 4, aggiornare il programma simula.cc . Riflettere su:
a. Perche' e'
possibile aggiungere una sonda nel sistema solare senza cambiare nulla nella
definizione e nella implementazione della classe Sistema Solare?
b. Quali variazioni
e' stato necessario apportare alla Classe CorpoCeleste?
c. Perche' nel
metodo CalcolaPosizione di Sonda viene invocato esplicitamente il metodo calcolaPosizione
di Corpo Celeste? E con quale sintassi?
2. Studiare:
1.
Funzionamento
dei costruttori e distruttori
Verificare, attraverso l'uso di istruzioni di stampa nei costruttori e nei distruttori, come funziona il meccanismo di creazione e di distruzione per classi legate tra loro da una relazione di ereditarieta', sia nel caso di oggetti ai quali si accede direttamente, sia nel caso di oggetti ai quali si accede con puntatori della classe stessa o con puntatori alla classe da cui l'oggetto eredita . Si consiglia di utilizzare (modificandoli per aggiungere una sonda) i programmi main Es1_a , Es1_b e o Es1_cbis/Es1_dbis dell'esercitazione 1.
2.
Uso di metodi
virtuali
Utilizzando
l'accesso agli oggetti attraverso i puntatori (Es1_cbis/Es1dbis) o mediante gli
oggetti stessi (Es1_a), verificate il funzionamento del polimorfismo invocando
il metodo CalcolaPosizione. Verificate quali risultati si ottengono definendo o
non definendo il metodo come virtual. Verificate che
solo definendo opportunamente il metodo come virtual e' possibile accedere
correttamente ad esso attraverso un vettore di puntatori.
3.
Distruttori
virtuali
Verificate il
meccanismo di funzionamento dei distruttori, definendo o non definendo il
distruttore di CorpoCeleste come virtual. Accedete agli
oggetti attraverso vettori di puntatori o attraverso gli oggetti stessi.
4.
Uso di classi
astratte
Rendete la classe
"piu' in alto" nella catena ereditarieta' (CorpoCeleste) una classe astratta,
definendo almeno un metodo come pure
virtual. Verificate che in
questo caso
i) Tutte
le classi che erditano (nel nostro caso Sonda) devono fornire l'implementazione
del metodo pure virtual
ii)
Non e' piu' possibile istanziare un oggetto della classe astratta
(CorpoCeleste)