More Related Content Similar to POO - 17 - Interfaces (20) More from Ludimila Monjardim Casagrande (15) POO - 17 - Interfaces2. 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
3. Interfaces
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 Lâmpada
Qualquer outra requisição feita • acender
a esse objeto será considerada
• apagar
inválida.
Interfaces ©2012 Ludimila Monjardim Casagrande 3
4. Interfaces
As interfaces estabelecem as mensagens que
podem ser trocadas entre os componentes de
software e ocultam os detalhes de implementação.
executar_cobrança
Interfaces ©2012 Ludimila Monjardim Casagrande 4
5. 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
6. 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
7. Exemplo de Uso de Interface
public interface Figura {
public abstract double calcularArea( );
}
public class Quadrado implements Figura {
double lado;
public Quadrado(double lado) {
this.lado = lado; Como a classe Quadrado
} implementa a interface
Figura, então, o método
public double calcularArea( ) {
calcularArea( ) deve
double area = 0; obrigatoriamente ser
area = lado * lado; implementado.
return area;
}
}
Interfaces ©2012 Ludimila Monjardim Casagrande 7
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 8
9. Exemplo de Uso de Interface
public class Main {
Observe que uma interface
não pode ser instanciada,
public static void main(String[] args) {
mas é possível um
objeto, declarado como
Figura f1 = new Quadrado(4); sendo do tipo definido por
uma interface, receber
Figura f2 = new Circulo(2); objetos de classes que
implementam tal interface.
System.out.println("Área da Figura 1 é: "
+ f1.calcularArea( ) + "n“
+ "Área da Figura 2 é: "
+ f2.calcularArea( ));
}
}
Interfaces ©2012 Ludimila Monjardim Casagrande 9
10. 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
11. 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
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.
Interfaces ©2012 Ludimila Monjardim Casagrande 12
13. Múltiplas Interfaces
public interface Impressora {
public void imprime(Documento d); Uma classe pode
} implementar mais de
uma interface, assumindo
assim vários
public interface Fax {
comportamentos.
public void transmite(Documento d);
}
public class FaxImpressora implements Impressora, Fax {
public void imprime(Documento d) {
...
}
public void transmite(Documento d) {
...
}
}
Interfaces ©2012 Ludimila Monjardim Casagrande 13
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 ©2012 Ludimila Monjardim Casagrande 14
15. Interfaces e Sub-interfaces
Classe A Interface I1
Interface I2 Interface I3
Classe B
Classe C
Interfaces ©2012 Ludimila Monjardim Casagrande 15
16. 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
17. 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