SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

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
 
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
 
Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)Rafael Barbolo
 
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
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAlberto Simões
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosDaniel Brandão
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggersDaniel Maia
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Polimorfismo java
Polimorfismo javaPolimorfismo java
Polimorfismo javaFAFICA
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Apresentação Final de Banco de Dados
Apresentação Final de Banco de DadosApresentação Final de Banco de Dados
Apresentação Final de Banco de Dadossamlobo
 

Tendances (20)

Java orientação a objetos (interfaces)
Java   orientação a objetos (interfaces)Java   orientação a objetos (interfaces)
Java orientação a objetos (interfaces)
 
Estrutura de dados
Estrutura de dadosEstrutura de dados
Estrutura de dados
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
POO - 19 - Elementos Estáticos
POO - 19 - Elementos EstáticosPOO - 19 - Elementos Estáticos
POO - 19 - Elementos Estáticos
 
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
 
Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)Herança em Banco de Dados Objeto-Relacional (BDOR)
Herança em Banco de Dados Objeto-Relacional (BDOR)
 
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
 
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
 
Aula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de AtividadeAula 03 - Introdução aos Diagramas de Atividade
Aula 03 - Introdução aos Diagramas de Atividade
 
POO - Aula 10 - Polimorfismo
POO - Aula 10 - PolimorfismoPOO - Aula 10 - Polimorfismo
POO - Aula 10 - Polimorfismo
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando ArquivosAula 04 PHP - Utilizando Funções e Manipulando Arquivos
Aula 04 PHP - Utilizando Funções e Manipulando Arquivos
 
Prática de laboratório utilizando views, stored procedures e triggers
Prática de laboratório   utilizando views, stored procedures e triggersPrática de laboratório   utilizando views, stored procedures e triggers
Prática de laboratório utilizando views, stored procedures e triggers
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
POO - 13 - Arrays em Java
POO - 13 - Arrays em JavaPOO - 13 - Arrays em Java
POO - 13 - Arrays em Java
 
Polimorfismo java
Polimorfismo javaPolimorfismo java
Polimorfismo java
 
Modelagem de dados
Modelagem de dadosModelagem de dados
Modelagem de dados
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Apresentação Final de Banco de Dados
Apresentação Final de Banco de DadosApresentação Final de Banco de Dados
Apresentação Final de Banco de Dados
 

En vedette (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
 

Similaire à 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
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesRegis Magalhães
 
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
 
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
 

Similaire à 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
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
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
 
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
 

Plus de 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
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosLudimila Monjardim Casagrande
 

Plus de 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 - 20 - Wrapper Classes
POO - 20 - Wrapper ClassesPOO - 20 - Wrapper Classes
POO - 20 - Wrapper Classes
 
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 - 12 - A Classe Object
POO - 12 - A Classe ObjectPOO - 12 - A Classe Object
POO - 12 - A Classe Object
 
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 - 06 - Encapsulamento
POO - 06 - EncapsulamentoPOO - 06 - Encapsulamento
POO - 06 - Encapsulamento
 
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
 
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado 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