17
Interfaces Programação Orientada a Objetos Ludimila Monjardim Casagrande 2012

POO - 17 - Interfaces

Embed Size (px)

Citation preview

Page 1: POO - 17 - Interfaces

Interfaces

Programação Orientada a Objetos

Ludimila Monjardim Casagrande 2012

Page 2: POO - 17 - Interfaces

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

Page 3: POO - 17 - 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

Qualquer outra requisição feita

a esse objeto será considerada

inválida.

Interfaces

Lâmpada

• acender

• apagar

Interfaces ©2012 Ludimila Monjardim Casagrande 3

Page 4: POO - 17 - Interfaces

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

Page 5: POO - 17 - Interfaces

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

Page 6: POO - 17 - Interfaces

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

Page 7: POO - 17 - Interfaces

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.

Page 8: POO - 17 - Interfaces

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;

}

}

Page 9: POO - 17 - Interfaces

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.

Page 10: POO - 17 - Interfaces

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

Page 11: POO - 17 - Interfaces

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

Page 12: POO - 17 - Interfaces

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.

Page 13: POO - 17 - Interfaces

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.

Page 14: POO - 17 - Interfaces

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/

Page 15: POO - 17 - Interfaces

Interfaces e Sub-interfaces

Interfaces ©2012 Ludimila Monjardim Casagrande 15

Classe A

Classe B

Interface I1

Interface I2

Classe C

Interface I3

Page 16: POO - 17 - Interfaces

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

Page 17: POO - 17 - Interfaces

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