The Tinking Cap – Um exemplo de programação em C++ no paradigma ADT

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.

cap

O seu funcionamento é muito simples:

  1. Coloca-se um papelinho com uma mensagem na ranhura verde. Por exemplo “olá”.
  2. Coloca-se outro papelinho na ranhura vermelha com a mensagem “maria”.
  3. Se eu pressionar a antena de cor verde o capacete emite a mensagem “olá”.
  4. 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;
}&#91;/sourcecode&#93;

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.

<strong>main.cpp</strong>

#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 ;)

Anúncios

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s