11.4. Outros métodos relativos a um dado jogador do jogo

Queremos agora construir um método para saber a pontuação de um jogador com um dado nome. O código seguinte serve:

Repare como este método e o registarPontosJogada da secção anterior são quase iguais:

Outros métodos de instância de que precisaremos nesta classe seguem este padrão: por exemplo, métodos para saber a pontuação máxima numa só jogada de um jogador com dado nome, para saber se um jogador com dado nome está registado no jogo, etc.

Então, vamos definir um método privado (pois é somente para ser invocado a partir dos métodos da própria classe) que encontre e devolva um dado jogador, e vamos usá-lo a partir destes métodos.

Vamos então modificar os dois métodos anteriores para invocarem este último e acrescentar outros ainda, que também implementam o mesmo padrão.

Repare que também acrescentámos o método estahEmJogo que, dado o nome de um jogador, verifica se ele está registado no jogo, retornando true se está inscrito e false caso contrário. Este método permite que as classes cliente verifiquem se um jogador está registado antes de invocar um dos outros métodos, em situações em que não há a certeza de que o dado jogador está registado no jogo.

Repare que substituímos o texto O jogador com o nome nomeJog estah registado neste jogo que tínhamos nas pré-condições dos métodos acima por this.estahEmJogo (nomeJog).

Acrescentámos também o método maximoNumaJogada que retorna a pontuacao máxima numa só jogada do jogador com um dado nome.

Adicionemos agora a instrução seguinte ao método main da classe ClienteDeJogo,

As figuras seguintes ilustram o estado da memória em várias fases da execução desta instrução:

 

Vamos agora registar mais pontuações de jogadas para os dois jogadores; o nosso main da classe ClienteDeJogo passa então a ser o seguinte:

Após a execução da última instrução do main, o estado da memória ficará:

 

 

 


 

Anterior: 11.3. Registar pontuação de um dado jogador do jogo – 1ª versão

Seguinte: 11.5. Atributos e métodos de classe (static)