terça-feira, 6 de março de 2012

JAVA - Exemplo simples de Interface

Olá pessoal, hoje vamos falar um pouco sobre interfaces em Java. Interfaces são de extrema importância na orientação a objetos.

A interface não implementa métodos, ela contém apenas as assinaturas dos métodos. A implementação dos métodos da interface é feita pelas classes que implementam a interface.

O interessante de se utilizar interfaces é que elas são bem mais flexíveis quanto a mudanças de implementação. É importante ter em mente também que as interfaces não possuem atributos, mas só constantes.

O código abaixo exemplifica a declaração de uma interface:


Na linha 5 temos no lugar da palavra "class", temos a palavra "interface" para indicar que ali é uma interface. Na linha 7 temos a assinatura do método chamado calcularArea.

Vamos agora ver o código de duas classes que implementam a interface mostrada anteriormente. Primeiro iremos ver o código da classe Quadrado:

 

A classe Quadrado implementa a interface CalculaArea. Veja que eu utilizei a palavra reservada "implements" para implementar a interface.

Linha 7: declaração da variável "lado" referente ao lado do quadrado.

Linha 9: construtor da classe Quadrado, ele recebe uma variável do tipo double que representa o lado do quadrado.

Linha 13: implementação do método calcularArea, esse método foi definido na interface CalculaArea. A classe Quadrado implementa a interface CalculaArea, logo, ela é obrigada a implementar todos os métodos dessa interface. Na linha 14 é retornada a área do quadrado (lado * lado).

Vejamos o código da classe Circulo que também implementa a interface CalculaArea:


Utilizei implements porque a classe Circulo também implementa a interface CalculaArea. Na linha 7 temos a declaração da variável "raio" referente ao raio do círculo.

Linha 9: construtor da classe Circulo. Esse construtor recebe o raio.

Linha 13: temos novamente a implementação do método calcularArea, só que a implementação desse método na classe Circulo é diferente da implementação na classe Quadrado, já que o modo de calcular a área de um quadrado difere do modo de calcular a área de um círculo.

Percebeu a importância de se utilizar interface? Eu tenho duas classes que representam duas figuras geométricas, eu preciso saber a área dessas figuras, então eu tenho uma interface que contém uma assinatura de um método que será implementado nas classes que implementam a interface. 

Se eu tivesse uma classe chamada Losango eu poderia implementar também a interface CalculaArea, já que essa interface contém um único método chamado calcularArea e, portanto, seria interessante ter esse método implementado na classe Losango.

É através da interface que podemos especificar quais métodos as classes terão que implementar. Lembrando que uma interface não pode ser instanciada e que a classe que implementa a interface deve implementar todos os métodos da interface.


Segue o código da classe que contém o método principal:


Linha 9: Quadrado é um objeto do tipo CalculaArea porque implementa a interface CalculaArea. O que eu estou fazendo é utilizando o tipo CalculaArea para referenciar o objeto do tipo Quadrado.

Linha 10: semelhante a explicação da linha 9.

Linhas 12 e 13: mostro a área do quadrado e do círculo respectivamente.


Nenhum comentário: