Programação Orientada a Objetos II Aula - 14 Interfaces Prof. Pedro Luís Antonelli Anhanguera Educacional Uso de Interfaces em Java Uma interface em Java nada mais é que um conjunto de declarações de métodos (nome, tipo de retorno, tipos dos argumentos) desprovidos de implementação. Cabe ao programador que deseja implementar a interface em questão, providenciar uma implementação destes métodos na classe que ele está desenvolvendo. A declaração “Interface” Uma Interface tem uma declaração parecida com uma classe, porém a palavra interface é usada no lugar da palavra class. public interface Nome_da_Interface { } <public> tipo_retorno método_1(); // declaração do método 1 <public> tipo_retorno método_2(); // declaração do método 2 <public> tipo_retorno método_n(); // declaração do método n Usando a Interface... A palavra chave implements é utilizada para indicar que uma classe implementa uma determinada interface. public class Nome_Classe implements Nome_Interface { //atributos da classee public tipo_retorno metodo_1( ) { // implementação do método1 return ; } public tipo_retorno metodo_n ( ) { // implementação do método_n return ; } } Construindo um exemplo no NetBeans... Abrir o NetBeans e criar um aplicativo Java... Adicionando a interface... Interface ObjetoGeometrico adicionada... Adicionando os métodos calculaArea e calculaPerimetro na interface... Adicionando a classe Quadrado ao projeto... Implementando um atributo e os métodos assessores get e set para esse atributo Implementando a interface ObjetoGeometrico na classe Quadrado Implementando na classe Quadrado, os métodos declarados na interface ObjetoGeometrico. Testando a classe e a interface... Testando a classe e a interface... Adicionando uma nova classe ao projeto Implementando a interface ObjetoGeometrico na classe Retangulo Implementando na classe Retangulo, os métodos declarados na interface ObjetoGeometrico. Testando as classes e a interface... Interface ??? ou Classe Abstrata ??? O que foi feito com o uso de interface não poderia ser feito com uma classe abstrata? Considerações sobre Interfaces - Uma interface não é considerada uma Classe e sim uma Entidade; - Não possui implementação, apenas assinatura, ou seja, apenas a definição dos seus métodos sem o corpo; - Todos os métodos são abstratos; - Seus métodos são implicitamente Públicos e Abstratos; Considerações sobre Interfaces - Não há como fazer uma instância de uma Interface e nem como criar um Construtor; - Funcionam como um tipo de "contrato", onde são especificados os atributos, métodos e funções que as classes que implementem essa interface são obrigadas a implementar; - Já que Java não suporta Heranças Múltiplas, as Interfaces são usadas para implementá-las. Comparação Interface x Classe Abstrata Característica Interface Classe Abstrata Herança múltipla Uma classe pode implementar diversas interfaces Uma classe pode herdar somente uma classe Implementação Uma interface não pode conter qualquer tipo de código Uma classe abstrata pode fornecer código completo, ou ter apenas a declaração de seu esqueleto para ser posteriormente sobrescrita. Constantes Suporte somente constantes do tipo estática Pode conter constantes estáticas e de instância Velocidade Lento, requer trabalho extra para encontrar o método correspondente na classe atual. Rápido Funcionalidade Se você incluir um novo método em uma interface você precisa ajustar todas as implementações da interface Se você incluir um novo atributo em uma classe abstrata todas as classes herdarão esse atributo BIBLIOGRAFIA BÁSICA PADRÃO SANTOS, Rafael. Introdução à Programação Orientada a Objetos Usando Java. 1ª ed. Rio de Janeiro: Campus - Elsevier, 2008. BIBLIOGRAFIA BÁSICA DA UNIDADE 1) DEITEL, Harvery M.. Java : Como Programar. 6ª ed. São Paulo: Pearson - Prentice Hall, 2007. 2) SIERRA, Kathy; BATES, Bert. Use a Cabeça! Java. 1ª ed. Rio de Janeiro: Alta Books, 2005. BIBLIOGRAFIA COMPLEMETAR 1) BARNES, David J.. PROGRAMAÇÃO ORIENTADA A OBJETOS COM JAVA : UMA INTRODUÇÃO PRÁTICA USANDO O BLUE J. 1ª ed. São Paulo: Pearson, 2004. 2) KURNIAWAN, Budi. Java para Web com Servlets, JSP e EJB. 1ª ed. Rio de Janeiro: Ciência Moderna, 2002. 3) GOMES ASCENCIO, Ana Fernanda; CAMPOS, Edilene A.V. de. Fundamentos da Programação de Computadores : Algoritmos, Pascal, C/C++ e Java. 2ª ed. São Paulo: Pearson - Prentice Hall, 2008. 4) HORSTMANN, Cay S.; CORNELL, Gary. Core Java 2 : Fundamentos. 7ª ed. Rio de Janeiro: Alta Books, 2005. 5) ANSELMO, Fernando. Tudo Sobre a JSP : Com o Netbeans em Aplicações Distribuídas. 1ª ed. São Paulo: VisualBooks, 2005.