Código da Classe Veículos e sub-classes

De IFSC
Revisão de 09h11min de 29 de novembro de 2019 por imported>Fargoud
Ir para navegação Ir para pesquisar
#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;
}