Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C++]Overloading funzioni virtual

    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!!!
    L'impossibile richiede solo più tempo...

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Specifica sempre il linguaggio (come da regolamento).

    Ogni classe ha la sua stampadati(), giusto?

    Nel .cpp basta definirla come una normale funzione.
    codice:
    void Stella::stampaDati() {
       ...
    }
    //////////////////////////////
    void Satellite::stampaDati() {
       ...
    }
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    grazie mille...c sono riuscito....

    Sei stato davvero gentilE!!!
    L'impossibile richiede solo più tempo...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.