Curso de Java
by Antonio Rodrigues Carvalho Neto
Interfaces
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.
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.
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);
}
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);
}
}
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”);
} }
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)
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
Motor
liga()
desliga()
float HP;
float RPM
Mecanica
concertaMotor(Motor m)
retifica(Motor m)
String nome
String RazaoSocial
<<interface>>
Carro
liga()
desliga()
Trator
liga()
desliga()
Motocicleta
liga()
desliga()
Interface
Exemplo de desacoplamento – Motores
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
Exercício
Crie a interface TipoPagamento e faça com que as
classes Dinheiro, Cheque e CartaoCredito
implementem esta interface, conforme o desenho
abaixo.

Java orientação a objetos (interfaces)

  • 1.
    Curso de Java byAntonio Rodrigues Carvalho Neto
  • 2.
  • 3.
    Interface É um contratosem 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 deveser 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 podeimplementar 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 podemser 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
  • 10.
    Motor liga() desliga() float HP; float RPM Mecanica concertaMotor(Motorm) retifica(Motor m) String nome String RazaoSocial <<interface>> Carro liga() desliga() Trator liga() desliga() Motocicleta liga() desliga() Interface Exemplo de desacoplamento – Motores
  • 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 interfaceTipoPagamento e faça com que as classes Dinheiro, Cheque e CartaoCredito implementem esta interface, conforme o desenho abaixo.