Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 UNESP/FEG/DMA Programação de Computadores II - Prof. Senne Exercício de Laboratório 7.2 ATENÇÃO: Não esquecer de incluir os nomes dos alunos da turma em cada classe. Implementar, nas GUIs já disponíveis, as funcionalidades descritas a seguir. Atividade 1: Classe Banco. Suponha uma instituição bancária com um único caixa. Considere que os clientes chegam ao banco, regularmente, a cada 3 minutos e que o tempo de atendimento é um inteiro gerado aleatoriamente no intervalo [1, 5]. Considere que, ao chegar, o cliente espera pacientemente numa fila até que o caixa esteja disponível. Por exemplo: Instante de chegada Tempo de atendimento Início do atendimento Fim do atendimento Tempo de espera Tamanho da fila 0 2 0 2 0 0 3 4 3 7 0 0 6 5 7 12 1 1 9 4 12 16 3 1 12 4 16 20 3 1 15 3 20 23 5 2 Esta estrutura de dados pode ser armazenada em um componente JTable, que organiza os dados em linhas e colunas. O click no botão Novo Cliente deve exibir uma nova linha na tabela, com os valores adequados para cada uma das colunas, e atualizar os valores das caixas de texto. Para incluir um valor (v) na tabela, usar o método: tabela.setValueAt(v, linha, coluna); Para recuperar um valor (v) da tabela, usar o método: v = tabela.getValueAt(linha, coluna); O click no botão Limpar Janela deve mostrar a janela exatamente como aparece na figura ao lado. O tempo médio de espera deve ser calculado pelo método private double atualizarTempoEspera() e o tamanho médio da fila deve ser calculado pelo método private double atualizarTamanhoFila(). Observar que o tamanho da fila, a cada instante, é igual ao número de valores de início de atendimento que são maiores do que o instante de chegada do novo cliente. 2 Atividade 2: Classe Jogo. Um jogo consiste de 3 pilhas de fichas. O número inicial de fichas em cada pilha é gerado aleatoriamente no intervalo [5, 15]. Dois jogadores (A e B) se revezam nas jogadas. Perde o jogo quem não consegue fazer uma jogada possível. As jogadas possíveis são: • retirar 1 ou 2 fichas da pilha 1; • retirar 1 ou 3 fichas da pilha 2; • retirar 2 ou 3 fichas da pilha 3. O click no botão Novo deve gerar um novo jogo, ou seja, inicializar a tabela com valores adequados para cada uma das colunas da primeira linha e exibir a mensagem "Quem vai vencer: A ou B?" no painel inferior. O click no botão Jogar deve verificar se a seleção dos botões de rádio corresponde a uma jogada possível. Observar que uma jogada só é possível após o jogo ter sido gerado. Caso seja, deve exibir uma nova linha na tabela, com os valores adequados para cada uma das colunas, de acordo com a jogada realizada. Observar que a cada jogada, o valor exibido na coluna JOGADOR deve revezar entre "A" e "B". Caso não seja uma jogada possível, deve executar o método: JOptionPane.showMessageDialog(jf, "Jogada ilegal."); O método associado ao click no botão Jogar deve, após a realização de uma jogada, verificar se ainda existe a possibilidade de uma nova jogada. Caso não exista, o jogo acabou e o método deve exibir a mensagem "O jogador " + jogador + " perdeu!" no painel inferior, onde jogador corresponde ao valor da coluna JOGADOR exibido na última linha da tabela.
Compartilhar