Procedure preliminari

  1. controllate che nella HOME directory sia presente il file con i vostri nomi
  2. create una directory es_8
  3. spostatevi in es_8 Solo i files contenuti in /home/did.../es_8 verranno presi in considerazione!
  4. copiate nella directory es_8 i file CorpoCeleste.h CorpoCeleste.cc SistemaSolare.h SistemaSolare.cc che avete scritto durante le scorse esercitazioni
  5. usate emacs per creare il codice del programma richiesto (esempio: emacs esercit_08.cpp &): ricordatevi che ogni programma dovra' iniziare con una riga di commento in cui indicherete i nomi dei componenti del gruppo presenti all'esercitazione
  6. il programma verra' valulatato se funziona (compilazione, linking e corretta esecuzione secondo quanto richiesto) e in base alla chiarezza con cui e' scritto (inserite alcuni commenti nel testo e organizzate iterazioni e selezioni in maniera chiara)
  7. inserite alla fine del programma, sotto forma di commenti, delle brevi risposte ai quesiti che trovate nel seguito, sotto la voce "Osservazioni" )




Prima Parte:
Il meccanismo dell'ereditarieta' e la classe Sonda


Obiettivo dell'esercitazione

L'esercitazione vuole mostrare l'utilizzo del meccanismo dell'Ereditarieta' e del Polimorfismo in un caso concreto, all'interno della simulazione del moto dei pianeti del Sistema Solare.


Il testo dell'esercitazione

Definire ed Implementare la classe Sonda (Sonda.h e Sonda.cc) secondo lo schema discusso a lezione.
Utilizzate il pacchetto gnuplot per una visualizzazione grafica delle orbite.



Osservazioni

In particolare discutere quanto segue:

Perche’ e’ possibile aggiungere una sonda nel sistema solare senza cambiare nulla nella definizione e nella implementazione della classe Sistema Solare?


Quali variazioni e’ necessario apportare alla Classe CorpoCeleste?

(in particolare ai metodi calcola Posizione e al Distruttore)


Perche’ nel metodo CalcolaPosizione di Sonda viene invocato esplicitamente il metodo calcolaPosizione di Corpo Celeste? E con quale sintassi?




Seconda Parte:
L'utilizzo di un container STL per gli oggetti di tipo CorpoCeleste


Obiettivo dell'esercitazione

L'esercitazione vuole mostrare l'utilizzo concreto di un container STL.


Il testo dell'esercitazione


Nella classe SistemaSolare, sostituite l'utilizzo di


                        CorpoCeleste ** pianeti ;

con

                        vector<CorpoCeleste*> pianeti ;


Sara' necessario modificare le dichiarazioni nel file SistemaSolare.h e le implementazioni dei metodi nel file  SistemaSolare.cc. Sara' inoltre necessario includere gli header file per la gestione dei container STL:

#include <cstdlib>

#include <vector>


L'attributo

                           int N ;

e' ancora necessario?




Osservazioni

In particolare discutere quanto segue:

Perche’ e’ possibile modificare la classe SistemaSolare nella forma indicata senza modificare la classe CorpoCeleste?


Perche’ e’ possibile modificare la classe SistemaSolare nella forma indicata senza modificare il programma main? Quale accortezza e' necessario avere nella gestione dei costruttori di SistemaSolare affinche' non siano richieste modifiche al programma main?