Analise o código Java da classe GameEntry a seguir, em que ...
1 public class GameEntry {
2 protected String name;
3 protected int score;
4 public GameEntry(String n, int s) {
5 name = n;
6 score = s;
7 }
8 public String getName() {return name;}
9 public int getScore() {return score;}
10 }
Considere agora a classe Scores a seguir, que armazena os escores de um jogo em um arranjo chamado entries
1 public class Scores{
2 public static final int maxEntries = 10;
3 protected int numEntries;
4 protected GameEntry[] entries;
5 public Scores() {
6 entries = new GameEntry(maxEntries);
7 numEntries = 0;
8 }
9 // ... outros métodos desta classe seguem aqui
10 }
Para manter organizadas as entradas do arranjo entries, deve-se implementar um método da classe Scores, que insira os objetos GameEntry em ordem decrescente, segundo o valor de seus escores. Portanto, uma preocupação que um desenvolvedor deve ter ao implementar esse método de inserção da classe Scores é:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: C - comparar e deslocar referências para os objetos GameEntry até atingir o início do arranjo entries ou até comparar o novo valor de escore com um escore maior.
A questão aborda um cenário comum em programação: a inserção ordenada de elementos em um array. No contexto de um jogo, deseja-se manter um array de pontuações (score) em ordem decrescente, ou seja, do maior para o menor valor. Ao inserir um novo GameEntry no array, é necessário manter essa ordenação.
Para resolver essa questão, é essencial entender como funciona a inserção em arrays e a movimentação de elementos para preservar a ordem desejada. A alternativa correta, C, aborda esse processo corretamente. Ao inserir um novo registro de jogo, deve-se comparar o escore do novo objeto com os escores dos objetos já presentes no array. Se o novo escore for maior que um escore presente, deve-se deslocar esse e todos os registros subsequentes de menor valor uma posição para a direita, criando espaço para a inserção do novo GameEntry na posição correta que mantém a ordem decrescente.
A alternativa A está incorreta porque fala em deslocar para a direita registros com escores maiores, o que quebraria a ordem decrescente já que queremos começar pelo maior escore. A alternativa B sugere mover os registros para a esquerda, o que não faz sentido se estamos inserindo um novo elemento, pois precisamos de espaço para ele, e mover para a esquerda não criaria esse espaço. Por fim, a alternativa D está incorreta porque fala em mover todas as referências até a penúltima e menciona um valor nulo na última posição, o que não é relevante para o processo de inserção ordenada que estamos discutindo.
O conhecimento necessário para responder corretamente a esta questão inclui compreensão de arrays, métodos de inserção, e o princípio de ordenação. Ao entender esses conceitos, você pode aplicar a lógica correta para manter a ordem desejada no array.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Esta questão deveria ser anulada.
A chamada ao construtor de GameEntry (que ocorre na linha 6 da classe Scores) não compila por dois motivos:
1) a classe GameEntry não implementa um construtor com apenas um parâmetro do tipo int.
2) o atributo entries não é um GameEntry, e sim um vetor de GameEntry (é do tipo GameEntry[])
Para que a questão faça sentido, compilando e tendo como resposta o que se pede (letra c) é necessário que os parêntesis sejam trocados por colchetes.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo