O código é dividido em duas classes: Main
e Pessoa
.
Conta com três atributos que são: String nome
, int idade
e CategoriaIdade classificacao
.
(Sendo o último deles um atributo do tipo enum
com as opções: Criança
, Adolescente
, Adulto
e Idoso
).
No seu construtor é definido que os atributos de nome
e idade
receberão os valores passados por parâmetro na criação do objeto e também é chamado o método setCategoriaIdade
que armazena o valor do atributo classificacao
de acordo com o valor de idade
.
Os outros métodos da classe são apenas Getters para acessar o valor dos atributos em outras classes.
São cinco métodos: adicionaPessoa()
, ordenaPessoaNome()
, ordenaPessoaIdade()
, exibeListaFuncionalidades()
e main()
.
adicionaPessoa()
recebe por parâmetro uma lista de objetos do tipo Pessoa
, um nome e uma idade. O que o método faz é criar um objeto da classe Pessoa
com o nome e idade recebidos por parâmetro e adiciona esse objeto na lista também recebida como parâmetro. Por fim, o método imprime uma mensagem de confirmação da operação.
ordenaPessoaNome()
recebe uma lista de objetos do tipo Pessoa
. O que ele faz é ordenar essa lista utilizando o método sort()
da interface List, que aceita um Comparator por parâmetro, por meio do método comparing. O comparing recebe uma lista e usa o atributo lista.nome para ordená-la alfabeticamente.
O método ordenaPessoaIdade()
faz o exato mesmo procedimento que o método anterior, porém utilizando o comparingInt e o atributo lista.idade para ordená-la de forma ascendente.
exibeListaFuncionalidades()
é um método auxiliar que tem o propósito de imprimir em tela os comandos criados para utilizar as funcionalidade do programa via terminal.
O último método é o main()
que é o método utilizado para execução do programa. Ele inicia criando um Arraylist de objetos do tipo Pessoa
que implementa a interface List. Temos também um Scanner para possibilitar a leitura de inputs via terminal e por fim uma lógica de whiles e ifs encadeados para controlar o uso das funcionalidades que o programa oferece. Dependendo do caminho percorrido nessa lógica encadeada de respostas, será chamada uma funcionalidade específica do programa e, ao final de sua execução, retornará para lista de funcionalidades.
Ao iniciar a execução do programa automaticamente será criada uma lista de objetos do tipo Pessoa
vazia e será impresso instruções no terminal. Basicamente o programa tem três funcionalidades que são:
- Adicionar pessoas na lista: Para isso é necessário escrever o comando "adicionar pessoa" no terminal. Então será perguntado qual o nome desejado (não podendo a resposta ser em branco) e depois sua idade (não podendo ser menor que 0 e maior que 120 anos). Ao final do preenchimento dessas informações será impresso uma mensagem de confirmação e voltará para o loop de funcionalidades.
- Ordenar a lista por nomes: Para isso é necessário escrever o comando "ordenar nomes" no terminal. Então será exibida a lista com todas informações de cada uma das pessoas incluídas até o momento em ordem alfabética de nomes e retornará para o loop de funcionalidades.
- Ordenar a lista por idades: Para isso é necessário escrever o comando "ordenar idades" no terminal. Então será exibida a lista com todas informações de cada uma das pessoas incluída até o momento em ordem crescente de idade e retornará para o loop de funcionalidades.