Olá desenvolvedores, hoje vamos aprender na prática a implementar listas em Java. No tutorial “LISTAS E COLEÇÕES: INTRODUÇÃO”, vimos sobre o conceito de listas e coleções. Aprendemos que lista é uma estrutura ordenada que permite manipular objetos genéricos.
Na ocasião, apresentamos também duas interessantes características sobre listas, como a possibilidade de armazenar elementos duplicados. E a importante capacidade de aumentar dinamicamente o seu tamanho de acordo com o uso da estrutura.
Hoje vamos ver na prática como é uma estrutura de listas em Java e como de fato elas funcionam. Bom, até aqui, sempre que desejássemos adicionar ou remover uma disciplina ou nota, o que precisávamos fazer? Era necessário ir diretamente ao código para proceder com a adição ou remoção destes atributos.
E você há de concordar que não é o que esperávamos quando começamos a programar. Um sistema precisa ser dinâmico, e por conseguinte seu código precisa ser, digamos, maleável. E claro, sempre em conformidade com a regra de negócio. Dessa forma, deveria ser possível adicionar tantas disciplinas quanto desejássemos, mas sem colocar a mão em linha de código.
Assim, vamos alterar o nosso código para que possamos adicionar quantas disciplinas e notas desejarmos. E para isso, vamos trabalhar com as listas, cujo conceito foi apresentado anteriormente. Uma lista nos permite a partir de uma única estrutura trabalharmos com um conjunto de elementos do mesmo tipo. Neste exemplo, o conjunto de elementos será o objeto disciplina.
Dentro do objeto disciplina, passaremos a ter então apenas dois atributos, uma nota e uma disciplina. Porém, utilizando listas poderão ser adicionados tantos atributos quanto desejarmos.
IMPLEMENTANDO A CLASSE DISCIPLINA
A implementação da classe Disciplina ficará como mostra o exemplo na imagem abaixo:
O próximo passo é gerar os métodos setters and getters e também os métodos hashCode() e Equals(). E por fim gere também o toString, que receberá todos os atributos da lista e imprimirá o resultado na tela.
Agora sim, o aluno tem uma lista de disciplinas e suas respectivas notas. Anteriormente havíamos apenas instanciado na Classe Aluno, o objeto disciplinas.
Vamos adequar a linha de código acima para uma estrutura de lista. Observe que a classe, tipo de objeto da lista, ficará entre os símbolos de menor e maior <Disciplina>. Como boa prática sempre que for uma variável de lista, coloque-a no plural.
Perceba que será necessário também, mais uma vez, adequar o método que calcula a média das notas. Lembre-se de gerar os métodos setters and getters para a disciplina.
Não será possível pegar os dados de forma direta como estava sendo implementado até agora. Se temos uma lista, então o procedimento correto agora é percorrer esta lista. E é dessa forma que iremos proceder para “pegar” a nota de cada disciplina e efetuar o cálculo.
Na sequência iremos instanciar o objeto disciplina fazendo com que receba a nota do aluno.
CRIANDO UMA LISTA DE DISCIPLINAS
O primeiro passo para criar listas em java ou especificamente uma lista de disciplina começa pela instanciação do objeto disciplina no método principal. Depois atribuiremos a disciplina um nome e a nota referente a disciplina.
Disciplina disciplina1 = new Disciplina();
disciplina1.setDisciplina("HTML");
disciplina1.setNota(75);
Recupere a lista de disciplinas do aluno e adicione passando por parâmetro a disciplina que acabou de criar.
Proceda da mesma maneira para adicionar quantas disciplinas desejar a lista. Sempre lembrando de instanciar um novo objeto e “setar” seus valores antes de adicioná-lo a lista.
ALTERANDO O MÉTODO PARA CALCULAR A MÉDIA
O método para calcular a média receberá a estrutura de repetição foreach para percorrer a lista de disciplinas. O tutorial de hoje teve o objetivo de inserir você no contexto das listas.
Assim o for receberá a classe Disciplina e uma variável, neste caso de mesmo nome. E então apontará para a lista disciplinas, que é a lista da própria classe.
Dessa forma, dentro do for ficará a instrução que irá recuperar a nota da disciplina e cumulativamente adicioná-la a variável somaNota. A variável somaNota foi declarada antes do for, e inicializada com o valor zero.
Recapitulando, dentro do for apontamos para a lista e para o tipo de objeto existente dentro da lista. Sempre um conjunto de objetos do mesmo tipo. E no corpo do for, trabalhamos com a referência ao objeto que está dentro da lista.
Mas lembre-se que estamos calculando a média, e até o momento só adicionamos de forma cumulativa o valor das notas dentro da variável somaNota. A média das notas é o valor a ser retornado. Assim, este cálculo será feito no instante de retornar o valor.
Veja como ficou o método para calcular a média das notas.
Um importante detalhe é que vamos recorrer a uma funcionalidade do próprio Java para obtermos o tamanho da lista, (.size). Assim não teremos que ficar nos preocupando com isso e/ou informar manualmente quantos objetos a lista possui.
EM POUCAS PALAVRAS
Hoje trabalhamos com o conceito de listas em Java. Você pode notar que o nosso código embora tenha evoluído muito, ainda está um pouco engessado. Mas como sempre falo, este foi um caminho necessário para que você compreenda o que acontece nos bastidores.
Nos próximos tutoriais avançaremos ainda mais. No tutorial de hoje criamos uma lista e adicionamos objetos a ela. E não apenas isso, modificamos o método que calcula a média das notas do aluno, adaptando-o ao novo cenário.