Esercitazioni
del corso di Laboratorio di Calcolo (Parte B)
n. 8
Ereditarieta': la classe
Sonda
Utilizzo dei container STL per gli oggetti di tipo
CorpoCeleste
Il programma di questa esercitazione verra'
valutato
Procedure preliminari
- controllate che nella HOME
directory sia presente il file con i vostri nomi
- create una directory es_8
- spostatevi in es_8 Solo
i files contenuti in /home/did.../es_8 verranno presi in
considerazione!
- copiate
nella directory es_8 i file CorpoCeleste.h
CorpoCeleste.cc SistemaSolare.h SistemaSolare.cc che avete
scritto durante le scorse esercitazioni
- 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
- 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)
- 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?