No paradigma ADT (Abstract Data Type) o programa é construído mediante a utilização de tipos de dados definidos pelo utilizador (classes), que quando instanciadas originam objectos, cada um dos quais contendo um conjunto de dados e funções, que são manipulados de forma a resolverem o problema proposto.
No coração deste tipo de programação encontra-se o conceito de classe, em torno do qual se pode dizer que tudo funciona.
Após algums pesquisas encontrei este exemplo simpático, ao que fiz a minha adaptação/tradução, e que passo aqui a apresentar.
Imaginem um “capacete pensante”, tal como o mostrado na figura seguinte.

O seu funcionamento é muito simples:
- Coloca-se um papelinho com uma mensagem na ranhura verde. Por exemplo “olá”.
- Coloca-se outro papelinho na ranhura vermelha com a mensagem “maria”.
- Se eu pressionar a antena de cor verde o capacete emite a mensagem “olá”.
- Caso eu pressione a antena de cor vermelha, a mensagem exibida será “maria”.
Muito simples, não é?
Vamos começar por criar uma classe que defina todos os “capacetes pensantes” que correspondem a estas características. Esta classe vai ser codificada nos ficheiros “CapacetePensante.h” e “CapacetePensante.cpp“.
CapacetePensante.h
#ifndef CAPACETEPENSANTE_H
#define CAPACETEPENSANTE_H
#include <string>
using namespace std;
class CapacetePensante{
public:
void Ranhuras(string NovaMsgVerde, string NovaMsgVermelha);
void CarregouEmVerde();
void CarregouEmVermelho();
private:
string MensagemVerde;
string MensagemVermelha;
};
#endif
CapacetePensante.cpp
#include <iostream>
#include <string>
#include "CapacetePensante.h"
using namespace std;
void CapacetePensante::Ranhuras(string NovaMsgVerde, string NovaMsgVermelha){
MensagemVerde = NovaMsgVerde;
MensagemVermelha = NovaMsgVermelha;
}
void CapacetePensante::CarregouEmVerde(){
cout << MensagemVerde << endl;
}
void CapacetePensante::CarregouEmVermelho(){
cout << MensagemVermelha << endl;
}
Temos já uma classe que pode ser utilizada em qualquer dos programas que possamos vir a escrever.
Basta copiar estes dois ficheiros para a pasta do nosso projecto e chama-la para utilizar a classe de acordo com o programa pretendido.
Como poderei testar?
Basta imaginar dois capacetes pensantes. Um que diga “adoro” ou “detesto”, e outro que represente dois clubes de futebol, assunto que cada vez mais detesto, a par com a política.
Depois de criados os objectos “gostos” e “clubes”, inserem-se as mensagens nas ranhuras e pressionam-se as antenas … algo deste tipo.
main.cpp
#include "CapacetePensante.h"
int main(){
CapacetePensante gostos, clubes;
gostos.Ranhuras("adoro", "detesto");
clubes.Ranhuras("sporting", "benfica");
gostos.CarregouEmVerde();
clubes.CarregouEmVermelho();
gostos.CarregouEmVermelho();
return 0;
}
Já agora, para o serviço ficar completo, vou apresentar as linhas relativas à compilação, execução e output.
$ g++ -Wall main.cpp CapacetePensante.cpp -o CapacetePensante $ ./CapacetePensante adoro benfica detesto $
Este é um exemplo elementar da utilização de classes em C++, que aborda apenas os aspectos mais básicos deste paradigma de programação, que no entanto considero fundamentais.
Bom proveito.
Como se inicia a subida de uma escada?
Pelo primeiro degrau ;)