Podemos querer criar um jogador inicializando-o logo com todos os valores para os seus atributos (por exemplo, para poder ser usado em contextos em que os jogadores já podem ter pontuações anteriormente acumuladas).
Apesar de podermos fazer isso usando o construtor que já definimos e invocando de seguida o método que altera a sua pontuação, preferimos definir um novo construtor que faz essa inicialização.
xpublic class Jogador {
private String nome;
private int pontuacao;
private int maximoJogada;
// Escondemos aqui partes jah feitas
...
/**
* Inicializa os atributos de uma nova instancia
* @param nomeJog O nome do novo jogador
* @param pontos A pontuacao do novo jogador
* @param max O numero maximo de pontos ganho numa soh jogada
* @requires nomeJog != null && pontos >= 0 && max >= 0 && pontos >= max
*/
public Jogador (String nomeJog, int pontos, int max) {
this.nome = nomeJog;
this.pontuacao = pontos;
this.maximoJogada = max;
}
// Escondemos aqui partes jah feitas
...
}
Podemos representar o estado da memória como resultado da execução desta instrução (inserida, por exemplo, no main
da classe ClienteDeJogador
):
xxxxxxxxxx
Jogador outro = new Jogador("Rita", 11, 7);
Após executar o construtor, imediatamente antes de retornar ao main
:
Já de volta ao main
, após fazer a atribuição à variável outro
da referência para o novo objeto:
Anterior: 10.5. Métodos que alteram o estado
Seguinte: 10.7. Imprimir, duplicar e comparar objetos – como NÃO fazer!