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áticoO 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 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 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 Alguns SGBDs suportam enumerações diretamente. MySQL fornece um tipo enumerado Referências
|