Curso de Extensão: Linguagem de Programação C++ (Básico)
Faculdade de Informática, PUCRS, Porto Alegre, RS
Coordenação: Isabel Harb Manssour
Instrutores: Eduardo Bezerra e 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; }