•
Separando
a interface da implementação
Agora que sabemos
o princípio básico para criarmos classes, temos que ter em menta
também princípios de boa engenharia de sofware.
C++ é muito robusto e possíbilita a separação de
interface da implementação.
Isto é feito
com o uso de arquivos .h, que são conhecidos como arquivos cabeçalho.
A classe é escrita em um arquivo cabeçalho.
Suas funções são escritas em um arquivo .cpp comum, só
que com o mesmo nome do arquivo cabeçalho.
Vamos ver como
ficaria a calculadora com separação de interface da implementação.
Obs: você deve estudar seu compilador para que ele consiga determinar
como compilar e ligar arquivos com múltiplos arquivos-fontes.
//
Esse é o arquivo calculadora.h
#ifndef CALCULADORA1_H
#define CALCULADORA1_H
class calculadora
{
public:
calculadora(); //
construtor ( sem retorno, sem void )
int soma( int, int );
int sub ( int, int );
int mult( int, int );
int div ( int, int );
private:
int num1; // fora
dos membros não é possivel ter acesso ao esses dados
int num2;
};
#endif
-----------------------------
// Esse é o arquivo calculadora.cpp
#include
"calculadora.h"
calculadora::calculadora()
{
num1 = num2 = 0;
}
calculadora::soma(
int a, int b )
{
return a + b;
}
calculadora::sub
( int a, int b )
{
return a - b;
}
calculadora::mult(
int a, int b )
{
return a * b;
}
calculadora::div
( int a, int b )
{
return a / b;
}
-----------------------------
// Esse é o arquivo main.cpp, ou
o arquivo principal
#include <iostream>
using std::cout;
using std::endl;
#include
"calculadora.h"
int main()
{
calculadora calc;
cout
<< calc.soma(10, 5) << endl;
cout << calc.sub (10, 5) << endl;
cout << calc.mult(10, 5) << endl;
cout << calc.div (10, 5) << endl;
std::cin;
return 0;
}
Ok,
vamos começar pelo comando #ifndef CALCULADORA1_H, este é
uma diretiva para o pré-processador. O nome dela ira sempre
ter o _ ( underline ) no lugar do . ( ponto ) .
Essa diretiva verifica se o arquivo cabeçalho já foi incluido.
Ou seja, esse comando evita que o arquivo cabeçalho seja incluido no
codigo do programa mais de uma vez.
Caso ele ainda não foi incluido, será executado o proximo comando,
#define CALCULADORA1_H. Este define o arquivo calculadora.h
e seus comandos ( a classe ) são inseridos.
E por ultimo temos o #endif, que é o final do teste
#ifndef .
Nos arquivos calculadora.cpp
e main.cpp vemos uma inclusão de uma forma diferente, #include
"calculadora.h", todo arquivo .h é incluido desta
forma.
|