Olá desenvolvedores, até aqui aprendemos a adicionar dinamicamente itens a uma lista. Hoje vamos descobrir como podemos remover estes mesmos itens da nossa lista. Isso tornará o sistema que estamos desenvolvendo ainda mais dinâmico, promovendo mais interação com o usuário.
Antes, porém, vamos a aquela habitual e rápida passagem pelo que fizemos até o momento. Para a implementação dinâmica da lista utilizamos o laço de repetição for. Dessa forma, por meio dessa estrutura solicitamos ao usuário que adicionasse o nome da disciplina e a nota correspondente.
E por fim, ainda dentro do for, instanciamos o objeto lista, atribuímos os dados as respectivas variáveis e os adicionamos (os dados) a lista.
REMOVENDO DISCIPLINA DA LISTA
Tão comum quanto adicionar um item em um sistema, é a necessidade de remover algum item. E independente do motivo, seja porque foi constatado algum erro, ou mesmo porque não faz mais sentido ter determinada informação dentro do sistema. Independente do motivo, a possibilidade de remover algum item deve ser uma funcionalidade padrão dentro de qualquer sistema.
CLASSE JOPTIONPANE
O primeiro passo para removermos um item é perguntar ao usuário se ele deseja remover um item. Para isso utilizaremos um recurso da classe JoptionPane, do pacote javax.swing. Que como vocês sabem, oferecem caixas de diálogo nativas tanto para entrada quanto para saída de dados.
No entanto, dessa vez utilizaremos o showConfirmDialog, que traz uma peculiaridade. Uma vez que são janelas gráficas de confirmação podem ser configuradas levando em conta as seguintes opções. “YES_NO_OPTION” cujo valor é zero; “YES_NO_CANCEL_OPTION”, cujo valor é um. “OK_CANCEL_OPTION” cujo valor é dois. E por fim, o padrão “DEFAULT_OPTION”, cujo valor é (-1).
Um exemplo deste tipo de implementação seria:
int num = (JOptionPane.showConfirmDialog(null, "VOCÊ GOSTA DE JAVA?"+ JOptionPane.YES_NO_OPTION));
Ou ainda você pode considerar os valores de YES_OPTION = 0, NO_OPTION = 1 e CANCEL_OPTION = 2. E assim combiná-los com as instruções de seleção, if/else, opção esta que utilizaremos em nosso exemplo. Note que estas opções retornam um inteiro. Por isso o tipo de dados que precede a pergunta é um int e não uma String.
int escolha = JOptionPane.showConfirmDialog(null, "DESEJA REMOVER ALGUMA DISCIPLINA?");
A partir da pergunta procederemos da seguinte maneira quanto a resposta. Se o usuário clicar em Yes, significa que a escolha equivale a YES_OPTION, que por sua vez tem o valor zero. Então implementaremos o comando para remover a disciplina.
IMPLEMENTANDO A REMOÇÃO DO ITEM
No entanto, precedendo o comando remove(index), teremos que recuperar a lista de disciplinas a partir do objeto aluno.
aluno.getDisciplina().remove(Integer.valueOf(removerDisciplina).intValue() -1);
O comando remove(index) será utilizado para remover as disciplinas, onde index é a posição 1, 2, 3 ou 4. No lugar do index, seguindo o procedimento de converter uma String em um tipo inteiro, vamos adicionar a variável “removerDisciplina”. Lembrando que esta é a variável que recebe os valores do índice, isto é, a posição da disciplina na lista.
O valueOf é um método embutido que é usado para retornar uma instância Integer. Ao passo que o intValue() é um método embutido em Java que retorna o valor dessa instância Integer como um int. Mudando assim o método a ser chamado.
Outra importante consideração é que toda lista ou vetor começa na posição “0”. Mas ficaria estranho pedirmos ao usuário para remover algum item na posição zero. Assim, adicionamos o menos (-1), na enorme linha de código que representa o nosso índice.
Então, se desejamos remover uma disciplina na posição 1, dentro do contexto da programação esta então é a posição zero. Assim sendo 1 – 1 = 0.
A primeira disciplina que inserimos foi o “PHP”, e é ela que vamos remover. Isto significa que escolheremos a opção número 1, que corresponde a posição deste item em nossa lista.
CONCLUSÃO
Perceba como tudo se encaixa perfeitamente. Se no momento de definir o tamanho da nossa lista, no método que calcula a média tivéssemos “setado” manualmente este valor. Ao invés de recorrer a um recurso do Java que “calcula” automaticamente o tamanho da lista, teríamos um problema agora. Visto que ao remover um item da lista, agora a divisão é por três, e não por quatro.
Para termos certeza que tudo está funcionando corretamente, atribuímos para a primeira disciplina o único valor distinto. Todas as outras três receberam o mesmo valor, o que nos possibilita ver com clareza qual deve ser a média retornada. Ao PHP, adicionamos a nota 50, ao passo que para as linguagens C, C# e C++ adicionamos 75 para cada uma.
EM POUCAS PALAVRAS
Uau! Que bacana hein. No tutorial de hoje aprendemos como remover um item de uma lista. Aprendemos ainda alguns interessantes recursos como o “showConfirmDialog”, que provê uma maior interação com o usuário.
Cada conceito apresentado aqui hoje deve ser assimilado e compreendido. Não há necessidade de decorar, basta saber o porquê disso ou daquilo. Ter entendido plenamente porque recorremos ao (-1). Qual a função do valueOf(), bem como do intValue().
Saber que existem outros caminhos e porque uma dada direção foi escolhida em detrimento de outra é um importante passo que vai levar você para o próximo nível em sua carreira de programador.