Código da Classe Veículos e sub-classes
Ir para navegação
Ir para pesquisar
**** EXEMPLO DE HERANÇA ****
#include <iostream>
#include <stdlib.h>
using namespace std;
class veiculo_rodoviario{ //SUPER CLASSE
private:
int nrodas;
int npassageiros;
public:
void setanrodas(int n){nrodas = n;}
int pegarodas(){return nrodas;}
void setanpassageiros(int m){npassageiros = m;}
int pegapassageiros(){return npassageiros;}
};
class caminhao: public veiculo_rodoviario{
int carga;
public:
void setacarga(int c){carga = c;}
int pegacarga(){return carga;}
void Mostra();
};
enum tipocarro {carro, van, SUV};
class automovel: public veiculo_rodoviario{
enum tipocarro tipo;
public:
void setatipo(tipocarro t){tipo = t;}
enum tipocarro pegatipo(){return tipo;}
void Mostra();
};
void caminhao::Mostra()
{
cout<< "\nNumero de rodas: "<< pegarodas() << endl;
cout<< "\nNumero de passageiros: "<< pegapassageiros() << endl;
cout<< "\nCarga suportada [ton]: "<< pegacarga() << endl;
cout << "\n\n";
}
void automovel::Mostra()
{
cout<< "\nNumero de rodas: "<< pegarodas() << endl;
cout<< "\nNumero de passageiros: "<< pegapassageiros() << endl;
cout<< "\ntipo de automóvel: ";
switch(pegatipo())
{
case carro: cout << " CARRO \n"<< endl; break;
case van: cout << " VAN ou MINI-VAN \n"<< endl; break;
case SUV: cout << " SUV ou utilitario \n"<< endl; break;
}
cout << "\n\n";
}
int main()
{ caminhao c1, c2;
automovel a1;
veiculo_rodoviario v;
c1.setanrodas(6); //metodos da super classe
c2.setanrodas(10); //metodos da super classe
c1.setanpassageiros(4); //metodos da super classe
c2.setanpassageiros(6); //metodos da super classe
c1.setacarga(2);
c2.setacarga(5);
c1.Mostra();
c2.Mostra();
a1.setanrodas(4);
a1.setanpassageiros(5);
a1.setatipo(van);
a1.Mostra(); //POLIMORFISMO
system("pause");
return 0;
}
**** ADICIONANDO CONSTRUTORES ÀS CLASSES FILHAS: ****
#include <iostream>
#include <stdlib.h>
using namespace std;
class veiculo_rodoviario{ /***** SUPER CLASSE *****/
private:
int nrodas;
int npassageiros;
public:
void setanrodas(int n)
{nrodas = n;}
int pegarodas()
{return nrodas;}
void setanpassageiros(int m){npassageiros = m;}
int pegapassageiros(){return npassageiros;}
};
/***** CLASSE DERIVADA CAMINHAO *****/
class caminhao: public veiculo_rodoviario{
int carga;
void setacarga(int c)
{carga = c;}
int pegacarga()
{return carga;}
public:
caminhao();
void Mostra();
};
caminhao::caminhao()
{ int x;
cout<< "\n\n*** REGISTRO DE CAMINHAO ***\n"<< endl;
cout<<"\nEntre com o numero de rodas do veiculo: "<<endl;
cin>> x;
setanrodas(x);
cout<<"\nEntre com o numero de passageiros que o veiculo pode transportar: "<<endl;
cin>> x;
setanpassageiros(x);
cout<<"\nEntre com a carga maxima, em toneladas, que o veiculo suporta "<<endl;
cin>> x;
setacarga(x);
}
void caminhao::Mostra()
{
cout<< "\nNumero de rodas: "<< pegarodas() << endl;
cout<< "\nNumero de passageiros: "<< pegapassageiros() << endl;
cout<< "\nCarga suportada [ton]: "<< pegacarga() << endl;
cout << "\n\n";
}
/***** CLASSE DERIVADA AUTOMOVEL *****/
enum tipocarro {carro, van, SUV};
class automovel: public veiculo_rodoviario{
enum tipocarro tipo;
void setatipo(tipocarro t){tipo = t;}
enum tipocarro pegatipo(){return tipo;}
public:
automovel();
void Mostra();
};
automovel::automovel()
{ int x;
tipocarro t;
cout<< "\n\n*** REGISTRO DE AUTOMOVEL ***\n"<< endl;
cout<<"\nEntre com o numero de rodas do veiculo: "<<endl;
cin>> x;
setanrodas(x);
cout<<"\nEntre com o numero de passageiros que o veiculo pode transportar: "<<endl;
cin>> x;
setanpassageiros(x);
cout<<"\nEntre com o tipo de automovel: "<<endl;
cout<<"\t\t(1) CARRO \n"<< endl;
cout << "\t\t(2) VAN ou MINI-VAN \n"<< endl;
cout << "\t\t(3) SUV ou utilitario \n"<< endl;
cin>> x;
switch(x)
{
case 1:
case 'c':
case 'C': t = carro; break;
case 2:
case 'v':
case 'V': t = van; break;
case 3:
case 's':
case 'S': t = SUV; break;
default: t =carro;
}
setatipo(t);
}
void automovel::Mostra()
{
cout<< "\nNumero de rodas: "<< pegarodas() << endl;
cout<< "\nNumero de passageiros: "<< pegapassageiros() << endl;
cout<< "\ntipo de automóvel: ";
switch(pegatipo())
{
case carro: cout << " CARRO \n"<< endl; break;
case van: cout << " VAN ou MINI-VAN \n"<< endl; break;
case SUV: cout << " SUV ou utilitario \n"<< endl; break;
}
cout << "\n\n";
}
int main()
{ caminhao c1, c2;
automovel a1;
veiculo_rodoviario v;
c1.Mostra();
c2.Mostra();
a1.Mostra(); //POLIMORFISMO
system("pause");
return 0;
}
**** ADICIONANDO CONSTRUTOR À CLASSE-MÃE ****
#include <iostream>
#include <stdlib.h>
using namespace std;
class veiculo_rodoviario{ /***** SUPER CLASSE *****/
private:
int nrodas;
int npassageiros;
public:
veiculo_rodoviario();
void setanrodas(int n)
{nrodas = n;}
int pegarodas()
{return nrodas;}
void setanpassageiros(int m){npassageiros = m;}
int pegapassageiros(){return npassageiros;}
};
veiculo_rodoviario::veiculo_rodoviario()
{ int x;
cout<< "\n\n **** REGISTRO DE NOVO VEICULO RODOVIARIO **** \n"<<endl;
cout<<"Entre com o numero de rodas do veiculo: "<<endl;
cin>> x;
setanrodas(x);
cout<<"\nEntre com o numero de passageiros que o veiculo pode transportar: "<<endl;
cin>> x;
setanpassageiros(x);
}
/***** CLASSE DERIVADA CAMINHAO *****/
class caminhao: public veiculo_rodoviario{
int carga;
void setacarga(int c)
{carga = c;}
int pegacarga()
{return carga;}
public:
caminhao();
void Mostra();
};
caminhao::caminhao()
{ int x;
cout<<"\nEntre com a carga maxima, em toneladas, que o veiculo suporta "<<endl;
cin>> x;
setacarga(x);
}
void caminhao::Mostra()
{ static int n=1;
cout<< "\n\n*** CAMINHAO REGISTRADO #"<< n++<< ": ***\n"<< endl;
cout<< "\nNumero de rodas: "<< pegarodas() << endl;
cout<< "\nNumero de passageiros: "<< pegapassageiros() << endl;
cout<< "\nCarga suportada [ton]: "<< pegacarga() << endl;
cout << "\n\n";
}
/***** CLASSE DERIVADA AUTOMOVEL *****/
enum tipocarro {carro, van, SUV};
class automovel: public veiculo_rodoviario{
enum tipocarro tipo;
void setatipo(tipocarro t){tipo = t;}
enum tipocarro pegatipo(){return tipo;}
public:
automovel();
void Mostra();
};
automovel::automovel()
{ int x;
char c;
tipocarro t;
cout<<"\nEntre com o tipo de automovel: "<<endl;
cout<<"\t\t(1) CARRO \n"<< endl;
cout << "\t\t(2) VAN ou MINI-VAN \n"<< endl;
cout << "\t\t(3) SUV ou utilitario \n"<< endl;
cin>> c;
switch(c)
{
case '1':
case 'c':
case 'C': t = carro; break;
case '2':
case 'v':
case 'V': t = van; break;
case '3':
case 's':
case 'S': t = SUV; break;
default: t =carro;
}
setatipo(t);
}
void automovel::Mostra()
{ static int n=1;
cout<< "\n\n*** AUTOMOVEL REGISTRADO #"<< n++<< ": ***\n"<< endl;
cout<< "\nNumero de rodas: "<< pegarodas() << endl;
cout<< "\nNumero de passageiros: "<< pegapassageiros() << endl;
cout<< "\ntipo de automovel: ";
switch(pegatipo())
{
case carro: cout << " CARRO \n"<< endl; break;
case van: cout << " VAN ou MINI-VAN \n"<< endl; break;
case SUV: cout << " SUV ou utilitario \n"<< endl; break;
}
cout << "\n\n";
}
int main()
{ caminhao c1, c2;
automovel a1;
veiculo_rodoviario v;
c1.Mostra();
c2.Mostra();
a1.Mostra(); //POLIMORFISMO
system("pause");
return 0;
}