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);
CorpoCeleste* art[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!!!