Upload
armando-daniel
View
478
Download
2
Embed Size (px)
Citation preview
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 publicpor 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 nomeString 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.