Jogador
Uma abordagem muito mais esperta é considerar um jogador como uma entidade única,
O tipo de dados que representa estes jogadores é definido por uma classe Java.
Um jogador em particular é uma instância dessa classe, um objeto.
A classe em questão deverá definir:
o conjunto potencial de todos os jogadores (como combinações possíveis de valores permitidos para o nome, pontuação e número máximo de pontos numa só jogada) e
os métodos que podemos invocar sobre esses objetos
Depois de criada essa classe, se bem documentada, poder-se-ia gerar a documentação da sua API (Application Programming Interface) contendo, entre outras, a seguinte informação:
A partir do momento em que a classe Jogador
estivesse criada e disponível, poderíamos criar uma outra classe que declarasse variáveis do tipo Jogador
, construísse objetos desse tipo e usasse esses objetos, como é feito na classe seguinte.
xpublic class ClienteDeJogador {
public static void main (String [] args) {
Jogador meuJogador = new Jogador("Maria");
System.out.println("O nome eh " + meuJogador.nome());
meuJogador.registarPontos(5);
System.out.println("a pontuacao eh " + meuJogador.pontuacao());
meuJogador.registarPontos(9);
System.out.println("agora a pontuacao eh " + meuJogador.pontuacao());
System.out.println("o maximo de pontos feito numa jogada eh " +
meuJogador.maximoNumaJogada());
Jogador teuJogador = new Jogador("Pedro");
System.out.print("O nome deste outro eh " + teuJogador.nome());
// Um array com 7 elementos do tipo Jogador
Jogador[] participantes = new Jogador[7];
participantes[0] = new Jogador("Antonio");
participantes[0].registarPontos(7);
participantes[1] = new Jogador("Rui");
System.out.print("O nome do primeiro jogador: " + participantes[0].nome());
System.out.println(" e a sua pontuacao: " + participantes[0].pontuacao());
System.out.print("O nome do segundo jogador: " + participantes[1].nome());
System.out.println(" e a sua pontuacao: " + participantes[1].pontuacao());
}
}
Esta classe é uma classe cliente da classe Jogador
pois nela se usa o tipo de dados Jogador
. A classe Jogador
é uma classe fornecedora desta.
Embora ainda não tenhamos cosntruído a classe Jogador
, podemos imaginar a representação do estado da memória após a execução da última instrução do programa acima (não se preocupe por ainda não conseguir perceber bem algumas partes da imagem):
E podemos também imaginar o output do programa:
xxxxxxxxxx
O nome eh Maria
a pontuacao eh 5
agora a pontuacao eh 14
o maximo de pontos feito numa jogada eh 9
O nome deste outro eh Pedro
O nome do primeiro jogador: Antonio e a sua pontuacao: 7
O nome do segundo jogador: Rui e a sua pontuacao: 0
Nas próximas secções vamos ver, passo a passo, como se cria uma classe que define um tipo de dados.
Usaremos a classe Jogador
para ilustrar o processo.
As várias partes que compõem a definição da classe são descritas no bloco da classe, ou seja, entre as chavetas:
xxxxxxxxxx
public class Jogador {
// AQUI !!
}
Anterior: 10. Criar novos tipos de dados
Seguinte: 10.2. Atributos de instância