Instruções a serem seguidas na construção das respostas:
Para responder aos itens desta questão, escreva, apenas, o código completo das classes Jogador e GerenteJogo. Isso inclui o código apresentado no enunciado e o código que fará parte da resposta que deve ser escrita (escreva esse código).
É possível acrescentar o código que quiser nas classes Jogador e GerenteJogo, mas não é permitido suprimir nem modificar as variáveis de instância que fazem parte do código do enunciado. Não é permitido, também, modificar as interfaces
Observado e Observador nem acrescentar ao código do enunciado novas classes e/ou interfaces.
Uma empresa disponibiliza um site na Web em que grupos de 3 a 6 pessoas podem jogar partidas de Banco Imobiliário on-line.
O design do servidor do jogo está baseado nos padrões Observer e Singleton. Parte do código Java das classes e das interfaces que compõem o servidor é mostrado a seguir:
public interface Observador {
public void notifica(String jogada);
}
public interface Observado {
public void registra(Observador o);
public void remove(Observador o);
}
public class Jogador {
public Jogador( ) {
}
public void notifica(String jogada) {
// este método não precisa ser implementado
// pois isso é irrelevante para a questão
}
}
import java.util.ArrayList;
public class GerenteJogo {
private ArrayList<Observador> jogadores=new ArrayList<Observador>();
}
Nesse contexto, escreva um código Java que permita implementar os padrões Singleton e Observer, de acordo com a sequência de eventos descrita abaixo.
• Complete as classes GerenteJogo (observado) e Jogador (observador), de modo que um jogador se registre junto ao gerente do jogo, quando o construtor de classe Jogador for executado. Quando receber a solicitaçâo de registro, o observado terá de inserir o observador na lista de observadores (variável jogadores). Esse registro tem de seguir o protocolo relativo ao padrão Singleton.
• Implemente o método do observado que irá permitir que um jogador seja removido da lista de observadores (variável jogadores).
CONTEÚDO EXCLUSIVO
Confira nossos planos especiais de assinatura e desbloqueie agora!
CONTEÚDO EXCLUSIVO
Confira nossos planos especiais de assinatura e desbloqueie agora!
Ops! Esta questão ainda não tem resolução em vídeo.
Questões Relacionadas
Em 2016, o Ipea publicou uma pesquisa denominada “Sobrenomes e Ancestralidade no Brasil” [1], que buscava determinar a ancestralidade dos sobrenomes dos brasileiros.
Na primeira fase do trabalho, foram obtidos 71.404 pares de sobrenomes-ancestralidade a partir de diversas fontes históricas. Em uma segunda fase, usando nomes de 46,8 milhões de brasileiros encontrados na Relação Anual de Informações Sociais (RAIS) Migra de 2013, foram obtidos dois sobrenomes para cada indivíduo, resultando em uma base com 530 mil sobrenomes únicos.
Nesse ponto, ficou claro que muitos sobrenomes únicos não estavam na base criada a partir da fonte histórica. O motivo principal eram erros de digitação. Então, foi…
Java é uma linguagem de programação de alto nível e orientada a objetos que foi desenvolvida pela Sun Microsystems (agora propriedade da Oracle Corporation) na década de 1990 e foi projetada para ser portátil, eficiente e segura, permitindo que o código desenvolvido seja executado em diferentes plataformas sem a necessidade de recompilação. A seguir, é apresentado o código-fonte da classe TAD escrito em JAVA:
class Node {
int data;
Node next;
Node(int data) {
this.data = data;
this.next = null;
}
}
public class TAD {
private Node top;
private int size;
public TAD() {
this.top = null;
this.size = 0;
}
public void inserir(int data) {
Node newNode = new Node(data);
newNode.…
A necessidade de grandes quantidades de memória e o alto custo da memória principal têm levado ao modelo de sistemas de armazenamento em dois níveis. O compromisso entre velocidade e custo é encontrado por meio do uso de uma pequena quantidade de memória principal (inicialmente até 640 kbytes em microcomputadores do tipo IBM-PC usando sistema operacional DOS) e de uma memória secundária muito maior (vários milhões de bytes).
Como apenas a informação que está na memória principal pode ser acessada diretamente, a organização do fluxo de informação entre as memórias primária e secundária é extremamente importante. A organização desse fluxo pode ser realizada utilizando-se um mecanismo simples e…



