Allora la domanda penso sia semplice ma per chiarezza devo scrivere tantissime cose...se qualcuno di buon cuore mi aiuta lo ringrazio in anticipo...se vi scocciate d leggere tutto...vi capisco...GRAZIE....dopo questa premessa...:

La traccia dell'esame è la seguente:
Realizzare in C++ le classi CorpoCeleste, Stella e Satellite descritte sommariamente dal seguente diagramma delle classi UML(il diagramma non riesco a riportarlo però penso si capisca). La classe CorpoCeleste è una classe ASTRATTA. Si strutturi il codice dell’intera applicazione (programma principale e classi) secondo le appropriate tecniche di programmazione modulare.

CorpoCeleste
#Nome: string
#Tipo: string

+StampaNome_E_Tipo()
+StampaDati()

Stella

-Magnitudo: float
-Costellazione: string

+StampaDati()

Satellite

-Pianeta: string
-Distanza: float

+StampaDati()


Satellite e stella sono delle classi derivate di CorpoCeleste.

Lo svolgimento proposto dalla prof. è il seguente, con 2 file, uno .h e uno .cpp

Il primo .h esordisce così:
//ATTENZIONE: le funzioni sono state sviluppate tutte inline perche' questa
// e' la versione di test preparata per scrivere la traccia. Normalmente dovrebbero
//essere sviluppate nel file di implementazione


Vi dico il mio dubbio e poi vi scrivo i file:
allora non capisco come poter fare un file.cpp di implementazione avendo delle funzioni virtual void stampadati(); in tutte le classi e che fanno cose diverse, cioè nel file di implementazione delle funzioni come dovrei andare a scrivere la virtual void stampadati()??

Il file header1.h è:
Codice PHP:
using namespace std;
#include <string>
#include <iostream>

class CorpoCeleste {

   protected:

   
string Nome;
   
string Tipo;

   public:
   
CorpoCeleste(const string NOME="", const string T=""):
   
Nome(NOME), Tipo(T) {}

   
virtual void stampaNome_E_Tipo() {
   
cout << "\n Nome: " << Nome;
   
cout << "\n Tipo: " << Tipo;
   }

    
virtual void stampaDati() =0;
};

class 
Stella: public CorpoCeleste {

   protected:

   
string Costellazione;
   
float Magnitudo;

   public:
   
Stella(const string NOME="", const string T="", const string C="", const float M=0.0):
   
CorpoCeleste(NOME,T), Costellazione(C), Magnitudo(M) {}
   
virtual void stampaDati() {
   
cout << "\n Costellazione: " << Costellazione;
   
cout << "\n Magnitudo: " << Magnitudo;
   
cout << "\n\n";
   }
};

class 
Satellite: public CorpoCeleste {

   protected:

   
string Pianeta;
   
float Distanza;

   public:
   
Satellite(const string NOME="", const string T="", const string P="", const float D=0.0):
   
CorpoCeleste(NOME,T), Pianeta(P), Distanza(D) {}
   
virtual void stampaDati() {
   
cout << "\n Pianeta: " << Pianeta;
   
cout << "\n Distanza dal Pianeta (in migliaia di Km): " << Distanza;
   
cout << "\n\n";
   }
}; 
Il file main1.cpp è:
Codice PHP:
#include <stdlib.h>
#include "header1.h"

int main()
{
 
Stella scr("Rigel","Stella","Orione",0.1);
 
Satellite scu("Io","Satellite","Giove",422);
 
CorpoCelesteart[1];//Definizione di un array di 2 puntatori a CorpoCeleste
 
art[0]=&scr;
 
art[1]=&scu;
 for (
int i=0;i<2;i++) {
 
art[i]->stampaNome_E_Tipo();
 
art[i]->stampaDati();
 }
 
system("PAUSE");


Vi ringrazio ancora per la pazienza se qualcuno ha letto tutto...GRAZIE!!!