Programação
 › Algoritmo  › C/C++  › Java
Web
 › HTML/XHTML  › JavaScript  › PHP
Sistema Operacional
 › Comandos de DOS  › Windows  › Linux  › Mac/BSD
Office
 › Word / Writer  › Excel / Calc
Áreas do Site
 › Download  › Fórum  › Blog
Recomendamos
Computadores e Informática em Lisboa

Enum

Java nos possibilita criar uma estrutura de dados enumarada.

Essas estruturas de dados enumeradas são conjuntos de constantes organizados em ordem de declaração, ou seja, o que é declarado primeiro virá primeiro. A funcionalidade principal de enum é agrupar valores com o mesmo sentido dentro de uma única estrutura, como por exemplo, meses, dias da semana, cores, tabela periódica, etc. e também limitar ou determinar um número de valores que podem ser usados na programação.

Embora sua funcionalidade é totalmente diferente, a criação de uma estrutura enumerada é parecida com uma classe. Basta trocarmos a palavra-chave class pela palavra-chave enum.

Mas, devemos levar em consideração alguns fatores:

  1. Uma estrutura enum deve ter seu próprio arquivo da mesma forma que acontece com as classes públicas. Por exemplo, se nós implementarmos uma classe pública chamada HelloWorld, então, deve haver um arquivo chamado HelloWorld.java. Se criarmos um enumerador chamado Cores, então, deve haver um arquivo chamado Cores.java.
  2. Estruturas enum não são instanciáveis. Ou seja, estruturas enum não possuem um método construtor, portanto, não há como usar o instanciador new.
  3. Estruturas enum são apenas declaráveis. Portanto, toda a lista de constantes declaradas dentro desta estruturas são acessados estaticamente. Ou seja, nome da variável, mais ponto (.) e o nome da constante (Suposição: mes.JANEIRO).
  4. Toda estrutura enum possui um método para acessar seus valores em forma de array (vetor) chamado values().

Abaixo está uma estrutura enum:

public enum Cores {
    PRETO, BRANCO, PRATA;
}

Agora que temos nosso "kit de constantes" podemos usar em nossa classe.

public class TV {
    private int tamanho;
    private int canal;
    private int volume;
    private boolean ligada;
    //declaração da variável do tipo Enum Cores
    private Cores cor;

    public TV(int tamanho, Cores cor) {
        this.tamanho = tamanho;
        this.canal = 0;
        this.volume = 25;
        this.ligada = false;
        this.cor = cor;
    }

    public int getTamanho() {
        return tamanho;
    }
    public int getCanal() {
        return canal;
    }
    public int getVolume() {
        return volume;
    }
    public Cores getCor() {
        return cor;
    }

    public static void main(String args[]) {
        TV minhaTV = new TV(29, Cores.PRATA);
        /**
         * acessando estaticamente (diretamente)
         * o valor PRATA do enum Cores
         **/
        System.out.println("Características da minha TV:" +
                "\nTamanho:" + minhaTV.getTamanho() +
                "\nCanal atual:" + minhaTV.getCanal() +
                "\nVolume atual:" + minhaTV.getVolume() +
                "\nCor: " + minhaTV.getCor());
    }
}

Estruturas enum também podem ser determinadas. Dessa forma, podemos atribuir mais valores a mesma constante. Por exemplo, podemos fazer uma estrutura enum da tabela periódica com os símbolos químicos tendo todos os valores possíveis da tabela (Número Atômico, Peso Atômico e Nome do Elemento).

Para fazer isso, no final da enumeração, temos que declarar as constantes que foram usadas, assim:

...
private final int numero; //constante para número atômico
private final double peso; //constante para peso atômico
private final String nome; //constante para nome do elemento
...

O fator do encapsulamento usando private aqui será muito importante, pois dessa forma não haverá um meio de alterar o valor dessas constantes por acidente.

Após isso, criamos métodos para acessar esses valores.

...
private int numero(); 
private double peso();
private String nome();
...

Então, criamos a definição usada nas constantes. Essas definições se parecem muito com os construtores de classes, mas sua função é apenas indicar o que é cada uma das informações contidas em cada constante.

...
NomeDoEnum (int numero, double peso, String nome){
    this.numero = numero;
    this.peso = peso;
    this.nome = nome;
}
...

Relembrando: Todas estas definições sempre devem vir após a definição das constantes.

No exemplo abaixo, está esta estrutura com apenas três elementos químicos.

public enum TabelaPeriodica {
    // Declaração das constantes
    H  (1, 1.00794, "Hidrogênio"),
    HE (2, 4.002602, "Hélio"),
    O  (8, 15.9994, "Oxigênio");
    /**
    * Por ser um exemplo,
    * não foram colocados
    * todos os elementos químicos
    * da Tabela Periódica
    **/

    // Definição das constantes
    private final int numero;
    private final double massa;
    private final String nome;

    // métodos para acessar os valores
    private int numero() {
        return this.numero;
    }
    private double massa() {
        return this.massa;
    }
    private String nome() {
        return this.nome;
    }

    //método que define as constantes
    private TabelaPeriodica(int numero, double massa, String nome) {
        this.numero = numero;
        this.massa = massa;
        this.nome = nome;
    }

    public static void main(String args[]) {
        System.out.println("Dados do elemento químico H:");
        System.out.println("\nNúmero: " + TabelaPeriodica.H.numero() +
                "\nMassa: " + TabelaPeriodica.H.massa() +
                "\nElemento: " + TabelaPeriodica.H.nome());
    }
}

Creative Commons License
Autor: Denys William Xavier
Este artigo está sob Licença Creative Commons.

Faça o download da versão em PDF Indique nosso site Gostou?
Indique nosso site!
Este artigo foi
lido 69809 vezes
Bookmark e Compartilhe

Páginas Relacionadas

Enquete
O Google Chrome OS irá desbancar o Microsoft Windows 7?
» ProgramaçãoAlgorítmo | C/C++ | Java

» WebHTML/XHTML | JavaScript | PHP

» Sistema OperacionalComandos de DOS | Windows | Linux | Mac/BSD

» OfficeWord/Wirter | Excel/Calc

» Áreas do SiteDownloads | Fórum | Blog