DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Easy Java Magazine ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Orientação a Objetos: uma abordagem com Java - Revista easy Java Magazine 15 - Parte 3

Este artigo trata de novas maneiras de definir tipos em Java. Além das classes top level, a linguagem permite a definição das chamadas classes internas, divididas em quatro categorias, e os enums, introduzidos a partir de Java 5.






Nas partes iniciais desta série de artigos tratamos de classes – tanto concretas quanto abstratas – e de interfaces. Tais tipos são denominados classes de nível superior, ou top level class. Nesta edição iremos estudar outros tipos que podem ser declarados em Java – os tipos enum e as classes e interfaces aninhadas (nested).

Mas, o que são enums e classes aninhadas? Inicialmente vamos falar um pouco sobre enums. Antes de Java 5, era comum definir variáveis – geralmente int – que tinham um domínio restrito a poucos valores. Por exemplo, a classe Pessoa poderia ter um atributo sexo, do tipo int, onde 1 representaria o sexo masculino e 2, o feminino. E, em geral, isso levava a um código mais difícil de ler, o que poderia tornar a manutenção da aplicação um pouco mais complicada. Veremos a seguir como enums podem nos ajudar nesse aspecto e criar programas mais legíveis.

Por sua vez, as classes – ou interfaces – aninhadas são definições de classes dentro de outras. Essas classes são comumente conhecidas como classes internas, e consistem de um recurso que permite o agrupamento de classes que têm um relacionamento mais íntimo e singular. Em muitas situações um objeto só irá existir para a classe que estamos implementando, então faz pouco ou nenhum sentido criar uma classe separada para esse objeto único. A API de Java faz bastante uso desse recurso e, como exemplo, pode-se citar a classe Ellipse2D.Double. Esta classe interna, Double, é uma elipse definida em precisão double, dentro da classe Ellipse2D.

Existem quatro categorias de classes aninhadas e uma de interfaces aninhadas, que são:

  • Classes e interfaces aninhadas de nível superior;
  • Classes internas não-estáticas;
  • Classes locais de métodos;
  • Classes anônimas.

 

O grupo formado pelas classes internas não-estáticas, classes locais de métodos e classes anônimas são conhecidas como classes internas.

Nesta ordem, estudaremos primeiramente os enums e, em seguida, as classes aninhadas.

Tipos enum

Um enum é um tipo cujos atributos consistem basicamente de um conjunto fixo de constantes. No entanto, logo veremos que se pode declarar muito mais que isso em um enum. Um exemplo de campos constantes poderia ser os dias da semana (SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA, SABADO e DOMINGO). Em Java, um tipo enum é definido usando-se a palavra-chave enum, como se pode ver na Listagem 1.

 

Listagem 1. Declaração de enum.

public enum DiaSemana {

  SEGUNDA, TERCA, QUARTA, QUINTA, SEXTA, SABADO, DOMINGO

}

 

Os tipos enum comportam-se na verdade como os tipos enumerados que também podem ser encontrados em outras linguagens de programação, tais como C++ e ObjectPascal. Tipos enumerados são constantes declaradas em vez dos números inteiros que frequentemente são usados para representar opções entre diversas alternativas. Por exemplo, suponha que declarássemos em uma classe a variável int dia para representar os dias da semana, onde Segunda = 1, Terça = 2, e assim por diante. Com isso poderíamos ter o trecho de código mostrado na Listagem 2, por exemplo.

 

Listagem 2. Uso de variável int para representar dias da semana.

for ( dia = 1; dia <= 7; dia++ ) {

  if ( dia == 7 ) {

    System.out.println("Dia de folga");

  }

}

 

Podemos ver na Listagem 2 que a utilização desta abordagem compromete a clareza do código, tornando a lógica mais difícil de entender. Por isso, o uso de enums, como aquele definido na Listagem 1, pode tornar o nosso código mais legível.

Na Listagem 3 mostramos um exemplo de utilização do enum DiaSemana.

 

Listagem 3. Uso do enum DiaSemana.

public class Main {

 

  public static void main(String[] args) {

    DiaSemana dia1, dia2;  // inicialmente valem null

    dia1 = DiaSemana.SEGUNDA;

    dia2 = DiaSemana.SEXTA;

    if (dia1.equals(dia2)) {

      System.out.println(dia1 + " é igual a " + dia2);

    } else {

      System.out.println(dia1 + " não é igual a " + dia2);

    }

  }

 

}

 

Observe na Listagem 3 que as referências do tipo DiaSemana são inicializadas com valores enumerados, que são os atributos ("



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Easy Java Magazine ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    1 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Filipe Silva Dos Santos
Ótima explicação para classes aninhadas!!
[há +1 mês] - Responder

 



Publicidade
Autor
Carlos Araújo

É professor do curso de Sistemas de Informação no Centro Universitário Luterano de Santarém – Pará. Leciona Estruturas de Dados e Linguagem de Programação Orientada a Objetos usando Java, desenvolve sistemas há 20 anos e é certificado SCJP. Mantém o blog http://professorcarlos.blogspot.com.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03