Cursos / Jogos Digitais / Programação Estruturada / Aula

arrow_back Aula 12 - Registros e enumerações

5. Enumerações

Para entender a motivação das enumerações, vamos primeiro imaginar que precisamos declarar uma variável para representar o dia da semana no qual ocorreu a venda de um produto. Qual seria o tipo de dados que você utilizaria para declarar essa variável? Uma opção seria declará-la como do tipo int, usando os números de 1 a 7 para representar os dias da semana (domingo, segunda-feira, ..., sexta-feira). Outra opção seria usar caracteres ou Strings.

Pensando na variável declarada como do tipo int, temos os seguintes problemas:

  • Programadores podem se confundir na manutenção do programa para saber se o valor 2 é segunda-feira ou terça-feira, por exemplo. Afinal, a semana começa no domingo ou na segunda-feira? Isso é uma decisão de quem programou originalmente o programa.
  • Um valor inválido, como 8, pode ser atribuído a essa variável. Isto porque sendo do tipo int, a variável pode receber qualquer valor do tipo inteiro suportado pelo computador.

Para contornar esses problemas, existe um recurso interessante que algumas linguagens fornecem: as enumerações. De forma geral, uma enumeração é um tipo de dados cujos valores são determinados por um conjunto fixo de constantes. Por exemplo, podemos declarar a seguinte enumeração em Java para representar os dias da semana:

Assim como as classes, enumerações em Java precisam ser criadas em arquivos separados. Observe o uso de public enum ao invés de public class na primeira linha da declaração da enumeração. Muitos ambientes de desenvolvimento Java possuem uma opção de menu para criar uma nova enumeração, assim como acontece com a criação de classes.

Ao invés de conterem variáveis e rotinas, as enumerações em Java contêm uma lista de constantes que representam os possíveis valores da enumeração. No caso do exemplo mostrado, existe uma constante para cada dia da semana. Note que as constantes não são declaradas como valores 1, 2, 3, etc., mas sim como nomes intuitivos sobre o que cada uma das constantes representa.

Uma vez declaradas as constantes da enumeração, fazemos uso delas da seguinte forma:

Note a declaração da variável “diaSemana” na rotina “main()” como do tipo “EnumDiaSemana”. Para lermos um valor para essa variável do teclado, temos que usar algum artifício como o mostrado pela função “pegarDiaSemana()”. Do teclado, nós lemos um número e depois convertemos seu valor para uma das opções da enumeração, como mostrado dentro do código da função “pegarDiaSemana()”.

Com a variável inicializada, podemos criar programas para manipular esse valor. Por fim, quando precisarmos imprimir essa informação na tela, faremos novamente uma conversão. Isto é mostrado pela função “nomeDiaSemana()”. Essa função recebe um valor do tipo “EnumDiaSemana” e converte para uma String que melhor representa o valor recebido. Na rotina “main()”, essa String é então utilizada para apresentar a informação para o usuário.

Versão 5.3 - Todos os Direitos reservados