Jogo
Para o objetivo que temos em mente, consideraremos que um jogo é totalmente caracterizado pela coleção de jogadores que nele se registam e pela pontuação que um jogador tem que ter para poder ganhar o jogo.
Começamos então por declarar os atributos da classe, um construtor que permita inicializar esses atributos e um método de instância que revela a pontuação objetivo do jogo.
x/**
* Classe cujos objetos representam jogos
* @author Isabel Nunes
*/
public class Jogo {
// A coleccao dos jogadores
private Jogador [] jogadores;
// Pontuacao objetivo
private int objetivo;
/**
* Construir um jogo.
* @param objetivo A pontuacao com que se ganha este jogo
* @requires objetivo > 0
*/
public Jogo (int objetivo) {
this.objetivo = objetivo;
this.jogadores = new Jogador [5];
}
/**
* A pontuacao objetivo deste jogo.
*/
public int pontuacaoObjetivo () {
return this.objetivo;
}
...
}
O construtor recebe o valor de pontuação objetivo para o novo jogo como parâmetro e usa-o para inicializar o atributo objetivo
do objeto em construção. Também inicializa o atributo jogadores
com um novo array de 5 elementos do tipo Jogador
. Como se deve lembrar, todos os elementos deste array são inicializados com o valor null
, o que é perfeitamente aceitável, pois quando um jogo é criado, nenhum jogador se registou ainda.
Esta classe é uma classe cliente da classe Jogador
pois nela se usa o tipo de dados Jogador
. Então, a classe Jogador
é uma classe fornecedora desta.
O programa seguinte cria e inicializa um objeto do tipo Jogo
e imprime o valor da sua pontuação objetivo no standard output:
xxxxxxxxxx
public class ClienteDeJogo {
public static void main (String [] args) {
Jogo meuJogo = new Jogo(30);
System.out.println("O objetivo eh " + meuJogo.pontuacaoObjetivo());
}
}
Após a execução das duas instruções, o estado de memória para o método main
pode ser representado como na figura:
E a linha seguinte é impressa no standard output:
xxxxxxxxxx
O objetivo eh 30
Anterior: 11. Um novo tipo de dados, cliente de Jogador
Seguinte: 11.2. Registar jogadores no jogo