Linguagem de Programação C++
Universidade Federal de Santa Catarina
Departamento de Engenharia Elétrica, CTC
Prof. Eduardo Augusto Bezerra
Profa. Cristiane Woszezenki
Separando as classes da implementação
As classes, como as estruturas (struct) definem novos tipos de dados. Em um projeto mais complexo onde se desenvolvem módulos para um programa, é necessário separar as definições (classes) de suas implementações. Desta maneira podemos refazer o programa dos veículos organizando o mesmo em três arquivos separados. Um arquivo Veiculos2.h, contendo apenas as classes (os tipos, interface de acesso ao objeto), um arquivo Veiculos2.cpp, contendo as implementações das classes e por último um arquivo chamado programa.cpp, que é o programa final (main).
Arquivo Veiculos2.h
#include <iostream> #include <string> using namespace std; // Classe Base class Veiculo { private: int motor; int n_rodas; public: void setNRodas(int); int getNRodas(void); int getMotor(void); Veiculo(int); //inicializa o motor }; // Primeira classe derivada class Caminhao: public Veiculo { private: int carga; public: int getCarga(void); void setCarga(int); void mostra(void); Caminhao(int, int); //recebe parametros para a carga e para o motor }; // Segunda classe derivada class Automovel: public Veiculo { private: string tipo; public: void setTipo(string); string getTipo(void); void mostra(void); Automovel(int, string); //recebe parametros para motor e tipo };
Arquivo Veiculos2.cpp
#include "Veiculos2.h" void Veiculo::setNRodas(int rodas){ n_rodas = rodas; } int Veiculo::getMotor(){ return motor; } int Veiculo::getNRodas(void ){ return n_rodas; } Veiculo::Veiculo(int m){ motor = m; } Caminhao::Caminhao(int m, int c): Veiculo(m){ // Veiculo::Veiculo(m); carga = c; } void Caminhao::setCarga(int c){ carga = c; } int Caminhao::getCarga(void){ return carga; } void Caminhao::mostra(void){ cout << "Caminhao: n rodas = " << getNRodas() << ", carga = " << getCarga() << ", motor = " << getMotor() << "\n" ; } Automovel::Automovel(int m, string t):Veiculo(m){ tipo = t; } void Automovel::setTipo(string t){ tipo = t; } string Automovel::getTipo(void){ return tipo; } void Automovel::mostra(void){ cout << "Automovel: n rodas = " << getNRodas( ) << ", tipo = " << getTipo( ) << ", motor = " << getMotor() << "\n"; }
Arquivo programa.cpp
#include "Veiculos2.cpp" int main( ){ Caminhao FNM(2,4000); Automovel Fusca(3, "SEDAN"); FNM.setNRodas(12); //FNM.setCarga(3000); FNM.mostra( ); Fusca.setNRodas(4); //Fusca.setTipo("SEDAN"); Fusca.mostra( ); getchar(); return 0; }