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

POO - 17 - Interfaces

  • 1.
    Programação Orientada aObjetos 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 Usode 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 Usode 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 Usode 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 ClassesAbstratas  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 ClassesAbstratas  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 ClassesAbstratas  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