View
3.275
Download
0
Embed Size (px)
Citation preview
Interfaces
Programação Orientada a Objetos
Ludimila Monjardim Casagrande 2012
Interfaces
Interfaces representam:
a parte pública de uma classe de objetos ou de
um componente de software;
uma especificação ou funcionalidades
esperadas;
o comportamento padrão que deve ser
apresentado por todas as classes que as
implementam.
Interfaces ©2012 Ludimila Monjardim Casagrande 2
A interface de um objeto é o conjunto de
operações públicas que ele pode realizar.
Um objeto da classe Lâmpada, por exemplo,
tem como interface as operações:
acender
apagar
Qualquer outra requisição feita
a esse objeto será considerada
inválida.
Interfaces
Lâmpada
• acender
• apagar
Interfaces ©2012 Ludimila Monjardim Casagrande 3
Interfaces
Interfaces 4
As interfaces estabelecem as mensagens que
podem ser trocadas entre os componentes de
software e ocultam os detalhes de implementação.
©2012 Ludimila Monjardim Casagrande
executar_cobrança
Interfaces
Uma interface é semelhante a uma classe abstrata, pois ambas definem métodos que outras classes devem implementar.
Uma classe abstrata pode conter métodos abstratos que as classes que irão estendê-la devem implementar.
Uma interface também define métodos que deverão ser implementados por classes que venham a implementar a interface.
Assim como classes abstratas, uma interface não pode ser instanciada.
Interfaces ©2012 Ludimila Monjardim Casagrande 5
Interface em Java
interface em Java é uma palavra-chave usada para
definir uma coleção de definições de métodos e de
constantes.
Essa coleção também é comumente denominada
especificação da classe.
Uma interface pode ser implementada por classes
e, para isso, é utilizada a palavra-chave implements.
Interfaces admitem apenas os níveis de acesso
public e default.
Interfaces ©2012 Ludimila Monjardim Casagrande 6
Exemplo de Uso de Interface
Interfaces ©2012 Ludimila Monjardim Casagrande 7
public interface Figura {
public abstract double calcularArea( );
}
public class Quadrado implements Figura {
double lado;
public Quadrado(double lado) {
this.lado = lado;
}
public double calcularArea( ) {
double area = 0;
area = lado * lado;
return area;
}
}
Como a classe Quadrado
implementa a interface
Figura, então, o método
calcularArea( ) deve
obrigatoriamente ser
implementado.
Interfaces ©2012 Ludimila Monjardim Casagrande 8
Exemplo de Uso de Interface
public class Circulo implements Figura {
double raio;
public Circulo (double raio) {
this.raio = raio;
}
public double calcularArea( ) {
double area = 0;
area = 3.14 * raio * raio;
return area;
}
}
Interfaces ©2012 Ludimila Monjardim Casagrande 9
Exemplo de Uso de Interface
public class Main {
public static void main(String[] args) {
Figura f1 = new Quadrado(4);
Figura f2 = new Circulo(2);
System.out.println("Área da Figura 1 é: "
+ f1.calcularArea( ) + "\n“
+ "Área da Figura 2 é: "
+ f2.calcularArea( ));
}
}
Observe que uma interface
não pode ser instanciada,
mas é possível um
objeto, declarado como
sendo do tipo definido por
uma interface, receber
objetos de classes que
implementam tal interface.
Interfaces x Classes Abstratas
Classes abstratas podem conter métodos não-
abstratos, isto é, que contêm implementação e que
podem ser herdados e utilizados por instâncias das
subclasses.
As interfaces não podem conter nenhum método
com implementação, todos os seus métodos são
implicitamente abstract e public e não possuem
corpo.
Os modificadores public e abstract podem ser omitidos sem
qualquer efeito colateral.
Interfaces ©2012 Ludimila Monjardim Casagrande 10
Interfaces x Classes Abstratas
Se existirem campos (atributos) nas interfaces, eles
serão implicitamente considerados public, static e
final, isto é, constantes públicas, devendo, portanto,
ser inicializados na sua declaração.
Se uma classe abstrata contiver apenas métodos
abstratos, então, ela pode ser criada como uma
interface, que terá o mesmo propósito de determinar
um comportamento padrão que deve ser
apresentado por todas as classes que a
implementa.
Interfaces ©2012 Ludimila Monjardim Casagrande 11
Interfaces ©2012 Ludimila Monjardim Casagrande 12
Interfaces x Classes Abstratas
A diferença essencial entre classes abstratas e interfaces em Java é que uma subclasse somente pode herdar de uma única classe (abstrata ou não), enquanto qualquer classe pode implementar várias interfaces simultaneamente.
Interfaces são, portanto, um mecanismo simplificado de implementação de “herança múltipla” em Java, que possibilita que mais de uma interface determine os métodos que uma classe herdeira deve implementar.
Múltiplas Interfaces
Interfaces ©2012 Ludimila Monjardim Casagrande 13
public interface Impressora {
public void imprime(Documento d);
}
public interface Fax {
public void transmite(Documento d);
}
public class FaxImpressora implements Impressora, Fax {
public void imprime(Documento d) {
...
}
public void transmite(Documento d) {
...
}
}
Uma classe pode
implementar mais de
uma interface, assumindo
assim vários
comportamentos.
Interfaces ©2012 Ludimila Monjardim Casagrande 14
Interfaces e Sub-interfaces
Assim como uma classe B pode estender outra classe
A, uma interface I2 pode estender outra interface I1.
Desse modo, quando uma classe C implementar I2, terá
também obrigatoriamente que implementar os métodos
definidos na interface I1.
Um bom exemplo disso é a interface java.util.List, da
API da linguagem Java, que estende a interface
Collection, também do pacote java.util.
API do Java: http://docs.oracle.com/javase/7/docs/api/
Interfaces e Sub-interfaces
Interfaces ©2012 Ludimila Monjardim Casagrande 15
Classe A
Classe B
Interface I1
Interface I2
Classe C
Interface I3
Em síntese...
Uma interface estabelece uma espécie de
contrato que é obedecido pelas classes que a
implementam.
Sendo assim, quando uma classe implementa
uma interface, garante-se que todas as
funcionalidades especificadas pela interface
serão oferecidas pela classe.
Interfaces ©2012 Ludimila Monjardim Casagrande 16
Bibliografia Sugerida
Orientação a Objetos em Java.
K19 Treinamentos. http://www.k19.com.br/downloads/apostilas-java
Java: Como programar.
Autores: H. M. Deitel e P. J. Deitel.
Editora: Pearson – 6ª Edição.
Complete Java 2 Certification.
Study Guide - Sybex.
Interfaces ©2012 Ludimila Monjardim Casagrande 17