Enumeração (tipo de dado)
Em programação, uma enumeração é um tipo de dado abstrato, cujos valores são atribuídos a exatamente um elemento de um conjunto finito de identificadores escolhidos pelo programador. Esse tipo é geralmente usado para variáveis categóricas (como os naipes de um baralho), que não possuem uma ordem numérica definida.
Em tempo de execução, um tipo de dado enumerado é geralmente implementado usado-se inteiros. Entretanto, comparando-se a usar somente inteiros, os tipos enumerados tornam o código fonte mais bem documentado que através do uso explícito de "números mágicos". Dependendo da linguagem, a representação de inteiro pode não ser visível ao programador, o que previne operações como aritmética de enumerações.
Em algumas linguagens, o tipo booleano é declarado como uma enumeração de dois valores, verdadeiro e falso.
Uso prático
[editar | editar código-fonte]O dialeto original da linguagem C não possuía enumerações, mas para o padrão ANSI (C89) elas foram adicionadas. Nessa linguagem, enumerações são criadas definindo-se explicitamente os elementos com o uso da palavra-chave enum
:
enum cardsuit {
CLUBS = 1,
DIAMONDS = 2,
HEARTS = 4,
SPADES = 8,
FIRST = 10,
SECOND, //igual a 11
THIRD, //igual a 12
};
a atribuição de um inteiro a cada elemento da enumeração é opcional, e definido automaticamente pelo compilador caso omitido.
A sintaxe de enumerações em Java é parecida com a de C. Entretanto, o sistema de tipos de Java trata as enumerações como um tipo diferente de inteiros, e não possível converter implicitamente entre inteiros e enumerações. De fato, em Java, um tipo de enumeração é uma pequena classe e não um tipo aritmético.
Linguagens sem tipagem de dados (como Perl e JavaScript) geralmente não fornecem enumerações. No caso do JavaScript é possível improvisar uma enumeração usando objetos (Literalmente ou com o construtor Object
), como no exemplo abaixo.[1]
var Dias = {
DOMINGO: 1,
SEGUNDA: 2,
TERÇA: 3,
QUARTA: 4,
QUINTA: 5,
SEXTA: 6,
SÁBADO: 7
};
Em linguagens funcionais na linha de ML, um tipo de dado algébrico pode ser usado para implementar enumerações. por exemplo:
datatype cardsuit = Clubs | Diamonds | Hearts | Spades
type card = { suit: cardsuit; value: int }
val hand : card list
val trump : cardsuit
Em Common Lisp usa-se o especificador de tipos de membros, como:
(deftype cardsuit ()
'(member club diamond heart spade))
O código acima define que objetos são do tipo cardsuit
se for igual a club
, diamond
, heart
ou spade
.
Alguns SGBDs suportam enumerações diretamente. MySQL fornece um tipo enumerado ENUM
com valores permitidos definidos através de cadeias de caracteres quando uma tabela é criada. Os valores são armazenados como índices numéricos.
Referências
- ↑ «Creating Javascript Enum values». www.ezineasp.net. Consultado em 15 de julho de 2012