3. Interface
É um contrato sem implementação entre dois ou mais
objetos. A interface serve como balizador para
determinar quais métodos um objeto pode esperar do
outro.
Na interface não há atributos apenas assinaturas dos
métodos.
A interface é utilizada para reduzir o acoplamento,
facilitando o reuso de classes.
Todos os métodos na interface são abstract e public
por padrão, colocar estes modificadores no código é
uma redundância.
4. Exemplo de Interface
Nota : A interface ElementoDiagrama tem apenas a declaração de métodos
sem código. Já as classes Retangulo e Circulo pelo fato de
implementarem a interface ElementoDiagrama eles possuem os métodos
desenhar() e redimensionar() implementados com código.
5. Interface
A interface deve ser criada utilizando-se:
<modificador> interface <nome da interface> {
<tipo de retorno 1> <nome metodo 1> (<parametros>);
<tipo de retorno 2> <nome metodo 2> (<parametros>);
<tipo de retorno n> <nome metodo n> (<parametros>);
....
}
Exemplo:
public interface Funcionario {
public void recebeSalario(float valor);
public void bateCartaoEntrada(Date horaAtual);
public void bateCartaoSaida(Date horaAtual);
}
6. Interface
Uma classe pode implementar uma ou mais interfaces, quando isso ocorre
a classe deve implementar ou seja colocar código em todos os métodos
recebidos da(s) interface(s).
Para implementar a interface a classe precisa utilizar a palavra-chave
implements seguida do nome da interface.
Se houver mais de uma interface implementada, então os nomes devem ser
separados por virgula (,)
Ao implementar mais de uma interface a classe precisa sobrescrever códigos
em todos os métodos recebidos das interfaces implementadas.
Exemplo:
public class operador implements Funcionario {
public void recebeSalario(float valor) {
System.out.println(“Salário Recebido no valor de : “ + valor);
}
public void bateCartaoEntrada(Date horaAtual) {
System.out.println(“Chegada as : “ + horaAtual);
}
public void bateCartaoSaida(Date horaAtual) {
System.out.println(“Saida as : “ + horaAtual);
}
}
7. Interface
As interfaces podem ser representadas da
seguinte forma:
public interface ElementoDiagrama {
public void desenhar();
public void redimensionar();
}
public class Retangulo implements
ElementoDiagrama {
int X;
int Y;
int Base;
int Altura
public void desenhar() {
System.out.println(“Desenha o
retangulo na posição (” + X + “, “ +
Y + “) com Altura ” + Altura + “ e
comprimento ” + Base);
}
public void redimensionar () {
System.out.println(“Pede novos valores
de X, Y e Base e Altura para o usuario”);
} }
public class Circulo implements ElementoDiagrama {
int X;
int Y;
int Raio;
public void desenhar() {
System.out.println(“Desenha o circulo na
posição (” + X + “, “ + Y + “) com Raio ”
+ Raio);
}
public void redimensionar () {
System.out.println(“Pede novos valores de X, Y
e Raio para o usuario”);
} }
8. Interface
Exemplo de desacoplamento – Arquitetura
InterfaceUsuario
mostraDados(String dados)
Sistema
mostra(InterfaceUsuario i)
String Dados
<<interface>>
Web
mostraDados(String dados)
Desktop
mostraDados(String dados)
Celular
mostraDados(String dados)
9. public interface InterfaceUsuario {
public void mostraDados(String dados);
}
public class Web implements InterfaceUsuario {
HttpServletRequest req;
HttpServletResponse res;
public void mostraDados(String dados) {
PrintWriter out = res.getWriter();
out.println(“<H1>”+ dados + “</H1>”);
}
}
public class Sistema {
String Dados;
public void mostra(InterfaceUsuario i) {
i.mostraDados(“Dados : " + Dados);
}
}
public class Desktop implements InterfaceUsuario {
public void mostraDados(String dados) {
JOptionPane.showMessageDialog(null, dados);
}
}
public class Celular implements InterfaceUsuario {
public void mostraDados(String dados) {
alert = new Alert( dados );
Display.getDisplay(this).setCurrent(alert);
}
}
Interface
Exemplo de desacoplamento – Arquitetura
11. public interface Motor {
public void liga();
public void desliga();
}
public class Motocicleta implements Motor {
public void liga() {
System.out.println(“Motor Gasolina ligado”);
}
public void desliga() {
System.out.println(“Motor Gasolina
desligado”);
}
}
public class Mecanica {
String RazaoSocial;
String Nome;
public void concerta( Motor m) {
m.desliga();
System.out.println(“Consertado...”);
m.liga();
}
public void retifica( Motor m) {
System.out.println(“Retificando...”);
}
}
public class Carro implements Motor {
public void liga() {
System.out.println(“Motor Alcool ligado”);
}
public void desliga() {
System.out.println(“Motor Alcool desligado”);
}
}
public class Trator implements Motor {
public void liga() {
System.out.println(“Motor Diesel ligado”);
}
public void desliga() {
System.out.println(“Motor Diesel desligado”);
}
}
Interface
Exemplo de desacoplamento – Motores
12. Exercício
Crie a interface TipoPagamento e faça com que as
classes Dinheiro, Cheque e CartaoCredito
implementem esta interface, conforme o desenho
abaixo.