Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNESP/FEG/DMA Programação de Computadores II - Prof. Senne Exercício de Laboratório 8.2 ATENÇÃO: Não esquecer de incluir os nomes dos alunos da turma nas classes Java. Atividade: Classe Estrutura. Uma estrutura de dados é uma forma de organização de dados em um computador. Esta organização refere-se a como os dados são incluídos na estrutura e como são extraídos da estrutura. Três estruturas de dados muito conhecidas são a pilha, a fila e o deque. Na estrutura de pilha, os dados são incluídos e extraídos sempre do início da estrutura (denominado de topo da pilha). Na estrutura de fila, os dados são incluídos sempre no fim da estrutura (fim da fila) e extraídos sempre do início da estrutura (início da fila). O deque é uma estrutura de dados que combina as estruturas de pilha e fila, ou seja, os dados são extraídos do início, mas podem ser incluídos no início ou no fim da estrutura. A classe Estrutura apresenta a GUI mostrada a seguir, que dispõe de opções para incluir e excluir dados nessas três estruturas. Implementar as funcionalidades descritas abaixo e de acordo com a seguinte hierarquia de classes (observar que Pilha, Fila e Deque são interfaces): Pilha Fila + void empilhar(int valor) + void enfileirar(int valor) Deque + boolean estaVazia() + void extrair() Estrutura − ArrayList dados + Estrutura() − int gerarAleatorio(int a, int b) . . . − void gerarEstrutura() − void limparEstrutura() − void incluirNaEstrutura(boolean inicio, int valor) − void excluirDaEstrutura() A seleção dos botões Pilha e Fila no painel superior esquerdo deve tornar invisível o painel inferior esquerdo, ou seja, o painel inferior esquerdo deve ser visível apenas se o botão Deque estiver selecionado. O construtor da classe Estrutura, além de criar a GUI, deve criar o ArrayList dados como uma coleção vazia. Esta coleção será utilizada para armazenar os dados da estrutura de dados selecionada (Pilha, Fila ou Deque). O click no botão Gerar deve chamar o método gerarEstrutura(). Este método deve preencher a coleção dados com valores inteiros gerados aleatoriamente no intervalo [10, 99]. O tamanho da coleção deve ser gerado aleatoriamente no intervalo [5, 10]. Além disso, este método deve exibir a coleção gerada no painel central e desabilitar os botões de rádio do painel superior esquerdo. A coleção gerada deve ser tratada como uma pilha, uma fila ou um deque de acordo com o botão selecionado no momento em que a coleção foi gerada. O click no botão Limpar deve chamar o método limparEstrutura(). Este método deve remover todos os dados presentes na coleção dados e restaurar a GUI de modo a apresentar a interface exatamente como mostrado na figura acima. O click no botão Incluir deve chamar o método incluirNaEstrutura(boolean inicio, int valor). O parâmetro inicio deste método deve ser true, se o dado for incluído no início da estrutura; caso contrário, o parâmetro deve ser false. Observar que se a estrutura de dados for uma pilha, o valor de inicio deve ser true; se for uma fila, o valor de inicio deve ser false; e se for um deque, o valor de inicio depende do botão selecionado no painel inferior esquerdo. O parâmetro valor ser um inteiro gerado aleatoriamente no intervalo [10, 99]. Este método deve incluir valor no início ou final da coleção dados, dependendo do valor do parâmetro inicio. Para incluir o novo valor na estrutura de dados, este método deve chamar o método empilhar() ou o método enfileirar(), conforme o caso. A coleção atualizada deve ser exibida no painel central. O click no botão Excluir deve chamar o método excluirDaEstrutura(). Observar que, qualquer que seja a estrutura de dados, o dado deve ser excluído do início da estrutura. Este método deve chamar o método estaVazia() para verificar se existe ou não dado a ser excluído da coleção dados. Caso a coleção não esteja vazia, este método deve chamar o método extrair() para excluir o elemento que está no início da coleção. A coleção atualizada deve ser exibida no painel central.
Compartilhar