0% acharam este documento útil (0 voto)
36 visualizações27 páginas

POO 13 (Interfaces)

O documento discute interfaces em Java. Ele explica que interfaces definem contratos para classes implementarem métodos sem implementá-los, permitem polimorfismo, e podem ser implementadas por múltiplas classes. Exemplos ilustram como interfaces definem métodos que classes devem implementar.

Enviado por

Rafael Lins
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
36 visualizações27 páginas

POO 13 (Interfaces)

O documento discute interfaces em Java. Ele explica que interfaces definem contratos para classes implementarem métodos sem implementá-los, permitem polimorfismo, e podem ser implementadas por múltiplas classes. Exemplos ilustram como interfaces definem métodos que classes devem implementar.

Enviado por

Rafael Lins
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 27

POO - Aula 13

Crystian Leão

Fonte: Material da Prof. Karina K. C.


Oliveira
Interfaces
Interfaces
• É utilizada para agrupar conceitos em
termos de projeto das classes.
• É um conjunto de declaraçõesde métodos
(nome, tipo de retorno e parâmetros)
desprovidos de implementação.
• Cabe ao programador que deseja
implementar uma determinada interface
providenciar uma implementação para os
métodos definidos na mesma.
Interfaces
• Toda interface pode ser vista como uma classe
abstrata, mas a recíproca não é verdadeira.
• Quando dizemos que uma classe implementa uma
interface obrigatoriamente essa classe tem que
implementar todos os métodos declarados na
interface.
• Neste sentido, uma interface pode ser vista como
sendo um contrato estabelecido entre a classe que
implementa a interface (provedora do serviço) e a
classe que vai utilizar os métodos definidos na
interface (cliente do serviço).
Interfaces
• Uma interface pode ser vista como projeto puro
enquanto que uma classe é um misto de projeto e
implementação.
• Uma interface não contém atributos, apenas
assinaturas de métodos.
• Constantes podem ser declaradas na interface para
serem compartilhadas entre as classes do sistema.
• Todos os métodos da interface são públicos.
• Uma interface em Java só pode ser pública ou
default (friendly).
Interfaces

• Pode-se ter atributos, variáveis ou


parâmetros de métodos cujo tipo é uma
interface.
• Não se pode instanciar objetos de
interfaces, mas sim de classes que
implementam as interfaces.
• Serve como base para o desenvolvimento
em camadas (dados, negócio, interface).
Exemplos
• A palavra reservada
implements é utilizada para
expressar este conceito.

• Exemplo 1:
Exemplos
• Exemplo 1: public interface IExemplo {
public void metodo1();
public void metodoN();
}

public class Exemplo implements IExemplo {

Erro de compilação porque a classe


Exemplo não implementa todos os
métodos definidos na interface IExemplo.
Exemplos
• Exemplo 1 - Corrigindo:
public class Exemplo implements IExemplo {
public void metodo1() {
System.out.println("Executando metodo1( )...");
}
public void metodoN() {
System.out.println("Executando metodoN( )...");
}
}

public class AplicacaoIExemplo {


public static void main(String[ ] args) {
IExemplo ex = new Exemplo( );
ex.metodo1( );
ex.metodoN( );
}
}
Exemplos
• Exemplo 1 - Adicionando novas implementações da interface:
Exemplos
• Exemplo 1 - Adicionando nova implementação da interface:

public class Exemplo2 implements IExemplo {


public void metodo1() {
System.out.println("metodo1( ) de Exemplo2...");
}
public void metodoN() {
System.out.println("metodoN( ) de Exemplo2...");
}
}
Exemplos
• Exemplo 1 - Alterando a aplicação para utilizar a
nova implementação da interface:
public class AplicacaoIExemplo {
public static void main(String[ ] args) {
System.out.println("Uso de Interface:");
IExemplo ex = new Exemplo2( );
ex.metodo1( );
ex.metodoN( );
}
}

Conclusão: Polimorfismo!
Vários objetos são tratados da mesma forma
Exemplos

• Exemplo 2 - Definição de interface com constante:

public interface IExemplo2 {


public void metodoA();
public void metodoB();
public static final int VALOR = 10;
}
Exercícios

• Exercício 1 - Forma geométrica


Exercícios

• Exercício 1 - Interface Forma geométrica

public interface FormaGeometrica {


public double area( );
public double comprimento( );
}
Exercícios

• Exercício 1 - Classe Circulo

public class Circulo implements FormaGeometrica {


private double raio;
private static final double PI = 3.14;
// Implementar construtor e métodos get e set
public double area( ) {
return (PI * raio * raio);
}
public double comprimento( ) {
return (2 * PI * raio);
}
}
Exercícios
• Exercício 1:
• Construir a classe Quadrado que
implementa a interface FormaGeometrica;
• Implementar programa de testes que
declara duas variáveis do tipo
FormaGeometrica e instancia dois objetos
um do tipo Circulo e outro do tipo
Quadrado. Exibir a área e o comprimento
dos objetos instanciados.
Exercícios
• Exercício 2:
• A classe InfoCliente do modelo de clientes
abaixo poderia se tornar uma interface?
Exercícios
• Exercício 3:
Exercícios
• Exercício 3:
• Implementar uma aplicação que declara uma variável
polimórfica do tipo OperacaoMatematica.
• A partir de dados fornecidos pelo usuário, a aplicação
deve realizar uma operação matemática e imprimir o
seu resultado.
• Oferecer para o usuário um menu para a escolha entre
as operações matemáticas disponíveis.
• OBS 1: Não defina a e b como atributos.
• OBS 2: Implemente um construtor padrão para cada
uma das classes.
MULTIPLAS INTERFACES
• Java Permite que uma classe implemente múltiplas
interfaces.
• Exemplo 1:
MULTIPLAS INTERFACES
• Exemplo 1: Mutiplas interfaces interface Impressao {
public void imprimeDados( );
}

public class Circulo implements FormaGeometrica, Impressao {


private double raio;
private static final double PI = 3.14;
// Implementar construtor e métodos get e set
public double area( ) {
return (PI * raio * raio);
}
public double comprimento( ) {
return (2 * PI * raio);
}
public void imprimeDados( ) {
System.out.println("Raio =" + raio); }
}
}
Conflitos de nomes
• Classe implementando múltiplas interfaces
Conflitos de nomes

• O que acontece quando métodos com o


mesmo nome aparecem nas duas interfaces?
• Caso 1: Sobrecarga
• Caso 2: A classe implementa um único
método que atende as duas interfaces.
• Caso 3: Métodos com a mesma assinatura,
mas diferindo no tipo de retorno, a classe
não poderá implementar as duas interfaces.
Conflitos de nomes

• O que acontece quando constantes


como mesmo nome aparecem nas duas
interfaces?
• Usar os nomes qualificados para
acessar essas constantes:
• NomeDaClasse.NOME_CONSTANTE
Herança múltipla de
interface

• Java permite herança múltipla entre


interfaces
• O problema do conflito de nomes
continua sendo resolvido da mesma
forma como é resolvido entre classes e
interfaces.
Hierarquia de tipos

Extends (herança e subtipo)

Implements (subtipo)

Extends (herança e subtipo)

Você também pode gostar