SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
Programação Orientada a Objetos



               Interfaces




          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
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
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
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
  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
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
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
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 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
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
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
Interfaces e Sub-interfaces
             Classe A       Interface I1




                            Interface I2                      Interface I3
             Classe B




                              Classe C




Interfaces              ©2012 Ludimila Monjardim Casagrande                  15
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

Weitere ähnliche Inhalte

Was ist angesagt?

Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosDaniel Brandão
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoVinícius de Paula
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E ClassesCursoSENAC
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfacesRafael Pinheiro
 
Uml diagrama de sequencia
Uml diagrama de sequenciaUml diagrama de sequencia
Uml diagrama de sequenciaItalo Costa
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5César Augusto Pessôa
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaDaniel Brandão
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)Janynne Gomes
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScriptClaudio Gamboa
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 

Was ist angesagt? (20)

POO - 20 - Wrapper Classes
POO - 20 - Wrapper ClassesPOO - 20 - Wrapper Classes
POO - 20 - Wrapper Classes
 
POO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de MétodosPOO - 18 - Sobrecarga e Sobreposição de Métodos
POO - 18 - Sobrecarga e Sobreposição de Métodos
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
 
Aula 4 - Estruturas condicionais
Aula 4 - Estruturas condicionaisAula 4 - Estruturas condicionais
Aula 4 - Estruturas condicionais
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Análise Orientada a Objetos - Objetos E Classes
Análise Orientada a Objetos  -   Objetos E ClassesAnálise Orientada a Objetos  -   Objetos E Classes
Análise Orientada a Objetos - Objetos E Classes
 
Linguagem C - Ponteiros
Linguagem C - PonteirosLinguagem C - Ponteiros
Linguagem C - Ponteiros
 
Aula 5 encapsulamento, associação, polimorfismo, interfaces
Aula 5   encapsulamento, associação, polimorfismo, interfacesAula 5   encapsulamento, associação, polimorfismo, interfaces
Aula 5 encapsulamento, associação, polimorfismo, interfaces
 
Uml diagrama de sequencia
Uml diagrama de sequenciaUml diagrama de sequencia
Uml diagrama de sequencia
 
Linguagem Dart (Google)
Linguagem Dart (Google)Linguagem Dart (Google)
Linguagem Dart (Google)
 
02 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.502 - Orientação a objetos e revisão de C# v1.5
02 - Orientação a objetos e revisão de C# v1.5
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
 
Aula orientação a objetos
Aula orientação a objetosAula orientação a objetos
Aula orientação a objetos
 
tmn - Introdução ao JavaScript
tmn - Introdução ao JavaScripttmn - Introdução ao JavaScript
tmn - Introdução ao JavaScript
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
Aula02 - JavaScript
Aula02 - JavaScriptAula02 - JavaScript
Aula02 - JavaScript
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 

Andere mochten auch (10)

Java Generics
Java GenericsJava Generics
Java Generics
 
Interfaces en java
Interfaces en javaInterfaces en java
Interfaces en java
 
Clases abstractas e interfaces en java
Clases abstractas e interfaces en javaClases abstractas e interfaces en java
Clases abstractas e interfaces en java
 
Interfaces en Java
Interfaces en JavaInterfaces en Java
Interfaces en Java
 
Java interfaces
Java interfacesJava interfaces
Java interfaces
 
Poo Java
Poo JavaPoo Java
Poo Java
 
¿Qué es una interface en java?
¿Qué es una interface en java?¿Qué es una interface en java?
¿Qué es una interface en java?
 
Interfaces en Java
Interfaces en JavaInterfaces en Java
Interfaces en Java
 
Clases abstractas e interfaces
Clases abstractas e interfacesClases abstractas e interfaces
Clases abstractas e interfaces
 
Generics
GenericsGenerics
Generics
 

Ähnlich wie Programação Orientada a Objetos: Interfaces

Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasManuel Menezes de Sequeira
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...Manuel Menezes de Sequeira
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgeLorran Pegoretti
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosLeonardo Melo Santos
 
Paper NOVL - Naked Objects View Language- InfoBrasil 2012
Paper NOVL - Naked Objects View Language- InfoBrasil 2012Paper NOVL - Naked Objects View Language- InfoBrasil 2012
Paper NOVL - Naked Objects View Language- InfoBrasil 2012Marcius Brandão
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)Armando Daniel
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrThiago Boufleuhr
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...Manuel Menezes de Sequeira
 

Ähnlich wie Programação Orientada a Objetos: Interfaces (20)

Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instânciasSemana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
Semana 10: Encapsulação, cópia de instâncias, igualdade de instâncias
 
Programação OO - Java
Programação OO - JavaProgramação OO - Java
Programação OO - Java
 
Java11
Java11Java11
Java11
 
A linguagem java
A linguagem javaA linguagem java
A linguagem java
 
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
10. Encapsulação; Cópia de instâncias; Igualdade de instâncias – Fundamentos ...
 
Padrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e BridgePadrões de projeto - Adapter, Proxy, Composite e Bridge
Padrões de projeto - Adapter, Proxy, Composite e Bridge
 
Curso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetosCurso de OO com C# - Parte 01 - Orientação a objetos
Curso de OO com C# - Parte 01 - Orientação a objetos
 
Interfaces e Porlimosfismo
Interfaces e PorlimosfismoInterfaces e Porlimosfismo
Interfaces e Porlimosfismo
 
Interfaces e polimorfismo
Interfaces e polimorfismoInterfaces e polimorfismo
Interfaces e polimorfismo
 
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de DesenvolvimentoPOO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
 
Encapsulamento em oo
Encapsulamento em ooEncapsulamento em oo
Encapsulamento em oo
 
Paper NOVL - Naked Objects View Language- InfoBrasil 2012
Paper NOVL - Naked Objects View Language- InfoBrasil 2012Paper NOVL - Naked Objects View Language- InfoBrasil 2012
Paper NOVL - Naked Objects View Language- InfoBrasil 2012
 
Novidades do Java 8
Novidades do Java 8Novidades do Java 8
Novidades do Java 8
 
Computacao distribuida com rmi
Computacao distribuida com rmiComputacao distribuida com rmi
Computacao distribuida com rmi
 
Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
 
Interface
InterfaceInterface
Interface
 
Arquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhrArquitetura mix thiagoboufleuhr
Arquitetura mix thiagoboufleuhr
 
Paradigma Orientado a Objeto
Paradigma Orientado a ObjetoParadigma Orientado a Objeto
Paradigma Orientado a Objeto
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
Orientação a Objetos
Orientação a ObjetosOrientação a Objetos
Orientação a Objetos
 

Mehr von Ludimila Monjardim Casagrande

POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosLudimila Monjardim Casagrande
 

Mehr von Ludimila Monjardim Casagrande (17)

Gerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com ScrumGerenciamento Ágil de Projetos com Scrum
Gerenciamento Ágil de Projetos com Scrum
 
POO - 23 - Coleções da API do Java
POO -  23 - Coleções da API do Java POO -  23 - Coleções da API do Java
POO - 23 - Coleções da API do Java
 
POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em JavaPOO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
 
POO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de DadosPOO - 21 - Java e Banco de Dados
POO - 21 - Java e Banco de Dados
 
POO - 19 - Elementos Estáticos
POO - 19 - Elementos EstáticosPOO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
 
POO - 15 - Passagem de Argumentos
POO - 15 - Passagem de ArgumentosPOO - 15 - Passagem de Argumentos
POO - 15 - Passagem de Argumentos
 
POO - 14 - Vetores
POO - 14 - VetoresPOO - 14 - Vetores
POO - 14 - Vetores
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
POO - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
POO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em JavaPOO - 09 - Entradas e Saídas em Java
POO - 09 - Entradas e Saídas em Java
 
POO - 08 - Prática de Encapsulamento
POO - 08 - Prática de EncapsulamentoPOO - 08 - Prática de Encapsulamento
POO - 08 - Prática de Encapsulamento
 
POO - 07 - Operadores do Java
POO - 07 - Operadores do  JavaPOO - 07 - Operadores do  Java
POO - 07 - Operadores do Java
 
POO - 04 - Variávies em Java
POO - 04 - Variávies em JavaPOO - 04 - Variávies em Java
POO - 04 - Variávies em Java
 
POO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - DatasPOO - 24 - Classes Básicas do Java - Datas
POO - 24 - Classes Básicas do Java - Datas
 
POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em JavaPOO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
 

Programação Orientada a Objetos: Interfaces

  • 1. Programação Orientada a Objetos Interfaces Ludimila Monjardim Casagrande 2012
  • 2. 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