Lançar os dados – Abordagem em C++ segundo o paradigma ADT

dice1

Estava para aqui a tentar elaborar mais um exemplo simples de utilização do paradigma ADT quando de repente me lembrei de um objecto simpático.

Pois é, um simples dado!

Que operações se podem realizar com este objecto?

  • Lançar.
  • Ver o número que saiu.

Vou então definir uma classe muito simples que permita utilizar estes objectos e de seguida escrever um programa que a utilize.

A classe:

Dice.h

#include <cstdlib>
#ifndef DICE_H
#define DICE_H
class Dice{
public:
	Dice(){
		faceup = ThrowDice();
	}
	int getFace(){
		return faceup;
	}
	int ThrowDice(){
		faceup = rand()%6+1;
		return faceup;
	}
private:
	int faceup;
};
#endif

O programa (que simula o lançamento de dois dados, apresentando o valor obtido):

game.cpp

#include
#include
#include
#include “Dice.h”
using namespace std;
int main(){
// seed the Random Number Generator
srand(time(0));

// create two dices
Dice A, B;

// Throw the dices
A.ThrowDice();
B.ThrowDice();

// Show the number in each dice
cout << "The first dice shows a " << A.getFace() << endl; cout << "The second dice shows a " << B.getFace() << endl; }[/sourcecode] Observações

  • Escrevi este código em Inglês porque a mistura de línguas começa a atrapalhar :);
  • A classe Dice possui um contrutor que garante que, mal o dado é criado, este receba um valor aleatório inicial;
  • Este exemplo possui um clara limitação, que resulta do facto de a classe estar dependente da “seed of the RNG”, que se traduz por algo do tipo “iniciar o gerador de números aleatórios”;
  • A função rand() é utilizada para obter um número inteiro compreendido entre 1 e 6;

E pronto, aqui fica mais um exemplo muito simplista para quem andar a tentar ententer o paradigma ADT ou a preparar-se para a programação orientada a objectos.

Nota: Ainda vou arranjar maneira se libertar o programa principal das preocupações com o RNG. Aceitam-se sugestões :)

Anúncios

2 thoughts on “Lançar os dados – Abordagem em C++ segundo o paradigma ADT

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