#import <cstdlib>
#import <iostream>
#import <string.h>
using namespace std;
class CorpoCeleste{
protected:
float massa;
float raio;
string tipo;
public:
CorpoCeleste(float,float,string);
virtual void orbita() =0; //Criando o método abstrato orbita.
virtual void display() =0; //Criando o método abstrato display, para imprimir na tela as informações.
};
CorpoCeleste :: CorpoCeleste(float m, float r, string t){
massa = m;
raio = r;
tipo = t;
}
class Planeta: public CorpoCeleste{
public:
Planeta(float m2, float r2, string t2):CorpoCeleste(m2,r2,t2){};//Aqui chamamos o construtor da classe CorpoCeleste.
void atmosfera(); //Atmosfera é exclusivo de planetas.
void orbita(); //Definindo o método orbita.
void display(); //Definindo o método display, para imprimir na tela as informações.
};
void Planeta :: orbita(){
cout << "Orbita eliptica" << endl;
}
void Planeta :: display(){
cout << "Massa: " << massa << endl;
cout << "Raio: " << raio << endl;
cout << "Tipo: " << tipo << endl;
}
void Planeta :: atmosfera(){
cout << "Atmosfera gasosa, composta de Oxigênio, Ozônio, Dioxido de Carbono, dentro outros em menor proporção" << endl;
}
class Cometa: public CorpoCeleste{
private:
int orb;
public:
Cometa(float m2, float r2, string t2):CorpoCeleste(m2,r2,t2){}; //Aqui chamamos o construtor da classe CorpoCeleste.
void Setorb(int);
void orbita(); //Definindo o método orbita.
void display(); //Definindo o método display, para imprimir na tela as informações.
};
void Cometa :: orbita(){
if(orb==1)
cout << "Órbita elipsóide" << endl;
else
cout <<"Órbita hiperbólica" << endl;
}
void Cometa :: Setorb(int o){
orb = o;
}
void Cometa :: display(){
cout << "Massa: " << massa << endl;
cout << "Raio: " << raio << endl;
cout << "Tipo: " << tipo << endl;
}
int main(){
Planeta Terra(57942,2345,"Planeta Rochoso");
Terra.display();
Terra.atmosfera();
cout << "--------------------" << endl;
Cometa Halley(22,55,"Cometa Periódico");
Halley.Setorb(1);
Halley.orbita();
Halley.display();
}
Se quiséssemos, poderíamos instanciar a classe Corpo Celeste, usando ponteiros no int main(), fazendo por exemplo:
CorpoCeleste *cp;
cp = &Terra;
cp->display();