SlideShare uma empresa Scribd logo
1 de 12
Baixar para ler offline
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.

Mais conteúdo relacionado

Mais procurados

Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Bruno Grange
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptRodrigo Branas
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a ObjetosIgor Takenami
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoVinícius de Paula
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Daniel Brandão
 
Curso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScriptCurso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScriptPablo Sanches
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controleProfessor Samuel Ribeiro
 
As vantagens e desvantagens da aplicação de padrões de projeto
As vantagens e desvantagens da aplicação de padrões de projetoAs vantagens e desvantagens da aplicação de padrões de projeto
As vantagens e desvantagens da aplicação de padrões de projetoGabriel Galdino
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosDaniel Brandão
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosFabio Moura Pereira
 

Mais procurados (20)

Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)Minicurso de JavaScript (Portuguese)
Minicurso de JavaScript (Portuguese)
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 
Programação Orientada a Objetos
Programação Orientada a ObjetosProgramação Orientada a Objetos
Programação Orientada a Objetos
 
Aula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de ProjetoAula 02 - UML e Padrões de Projeto
Aula 02 - UML e Padrões de Projeto
 
JAVA - Herança
JAVA - HerançaJAVA - Herança
JAVA - Herança
 
Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)Aula 02 - Principios da Orientação a Objetos (POO)
Aula 02 - Principios da Orientação a Objetos (POO)
 
POO - 10 - Herança
POO - 10 - HerançaPOO - 10 - Herança
POO - 10 - Herança
 
POO - 11 - Prática de Herança
POO - 11 - Prática de HerançaPOO - 11 - Prática de Herança
POO - 11 - Prática de Herança
 
UML - Diagrama de Pacotes
UML - Diagrama de PacotesUML - Diagrama de Pacotes
UML - Diagrama de Pacotes
 
Curso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScriptCurso HTML, CSS e JavaScript
Curso HTML, CSS e JavaScript
 
Html Básico
Html BásicoHtml Básico
Html Básico
 
Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2Diagramas de casos de uso - aula 2
Diagramas de casos de uso - aula 2
 
Aula 07 - Diagrama de sequencia
Aula 07 - Diagrama de sequenciaAula 07 - Diagrama de sequencia
Aula 07 - Diagrama de sequencia
 
Java básico - Módulo 04: Estruturas de controle
Java   básico - Módulo 04:  Estruturas de controleJava   básico - Módulo 04:  Estruturas de controle
Java básico - Módulo 04: Estruturas de controle
 
As vantagens e desvantagens da aplicação de padrões de projeto
As vantagens e desvantagens da aplicação de padrões de projetoAs vantagens e desvantagens da aplicação de padrões de projeto
As vantagens e desvantagens da aplicação de padrões de projeto
 
Encapsulamento em Orientação a Objetos
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Desenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos BásicosDesenvolvimento de Sistemas Web - Conceitos Básicos
Desenvolvimento de Sistemas Web - Conceitos Básicos
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 

Destaque

POO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e InterfacePOO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e InterfaceFelipe J. R. Vieira
 
Java orientação a objetos (herança)
Java   orientação a objetos (herança)Java   orientação a objetos (herança)
Java orientação a objetos (herança)Armando Daniel
 
Java introdução ao eclipse
Java   introdução ao eclipseJava   introdução ao eclipse
Java introdução ao eclipseArmando Daniel
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetosPaulo Carvalho
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesRegis Magalhães
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao javaArmando Daniel
 

Destaque (8)

POO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e InterfacePOO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e Interface
 
Java12
Java12Java12
Java12
 
Java11
Java11Java11
Java11
 
Java orientação a objetos (herança)
Java   orientação a objetos (herança)Java   orientação a objetos (herança)
Java orientação a objetos (herança)
 
Java introdução ao eclipse
Java   introdução ao eclipseJava   introdução ao eclipse
Java introdução ao eclipse
 
Java programação orientada a objetos
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
 
Java 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
 
Java introdução ao java
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
 

Semelhante a Java orientação a objetos (interfaces)

[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#Felipe Pimentel
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Javaelliando dias
 
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaotdc-globalcode
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologiaselliando dias
 
Curso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoCurso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoLuiz Carvalho
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Mini Curso de jQuery Lambda3/Globalcode
Mini Curso de jQuery Lambda3/GlobalcodeMini Curso de jQuery Lambda3/Globalcode
Mini Curso de jQuery Lambda3/GlobalcodeVictor Cavalcante
 
Android Dev Conference 2017 - Arquitetura para projetos Android
 Android Dev Conference 2017 - Arquitetura para projetos Android Android Dev Conference 2017 - Arquitetura para projetos Android
Android Dev Conference 2017 - Arquitetura para projetos AndroidiMasters
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Androidtdc-globalcode
 
Testes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusTestes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusDenis L Presciliano
 

Semelhante a Java orientação a objetos (interfaces) (20)

[CLPE] Design patterns com c#
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Ecosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
 
AspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Java
 
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Integração de Tecnologias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
 
Curso de Introdução ao Android Básico
Curso de Introdução ao Android BásicoCurso de Introdução ao Android Básico
Curso de Introdução ao Android Básico
 
Flutter do zero a publicacao
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacao
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Mini Curso de jQuery Lambda3/Globalcode
Mini Curso de jQuery Lambda3/GlobalcodeMini Curso de jQuery Lambda3/Globalcode
Mini Curso de jQuery Lambda3/Globalcode
 
Android Dev Conference 2017 - Arquitetura para projetos Android
 Android Dev Conference 2017 - Arquitetura para projetos Android Android Dev Conference 2017 - Arquitetura para projetos Android
Android Dev Conference 2017 - Arquitetura para projetos Android
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
TDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
 
Java3
Java3Java3
Java3
 
Testes em Aplicações Web com Cactus
Testes em Aplicações Web com CactusTestes em Aplicações Web com Cactus
Testes em Aplicações Web com Cactus
 
Mock Objects
Mock ObjectsMock Objects
Mock Objects
 
Java5
Java5Java5
Java5
 
Jdbc e hibernate
Jdbc e hibernateJdbc e hibernate
Jdbc e hibernate
 

Mais de Armando Daniel

Java recursos avançados - streams
Java   recursos avançados - streamsJava   recursos avançados - streams
Java recursos avançados - streamsArmando Daniel
 
Java recursos avançados - socket connection
Java   recursos avançados - socket connectionJava   recursos avançados - socket connection
Java recursos avançados - socket connectionArmando Daniel
 
Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreadingArmando Daniel
 
Java recursos avançados - filters
Java   recursos avançados - filtersJava   recursos avançados - filters
Java recursos avançados - filtersArmando Daniel
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)Armando Daniel
 
Java orientação a objetos (introdução)
Java   orientação a objetos (introdução)Java   orientação a objetos (introdução)
Java orientação a objetos (introdução)Armando Daniel
 
Java orientação a objetos (introdução) - exercicios
Java   orientação a objetos (introdução) - exerciciosJava   orientação a objetos (introdução) - exercicios
Java orientação a objetos (introdução) - exerciciosArmando Daniel
 
Java interface gráfica swing
Java   interface gráfica swingJava   interface gráfica swing
Java interface gráfica swingArmando Daniel
 
Java interface gráfica layouts
Java   interface gráfica layoutsJava   interface gráfica layouts
Java interface gráfica layoutsArmando Daniel
 
Java vetores e matrizes
Java   vetores e matrizesJava   vetores e matrizes
Java vetores e matrizesArmando Daniel
 

Mais de Armando Daniel (11)

Java code conventions
Java code conventionsJava code conventions
Java code conventions
 
Java recursos avançados - streams
Java   recursos avançados - streamsJava   recursos avançados - streams
Java recursos avançados - streams
 
Java recursos avançados - socket connection
Java   recursos avançados - socket connectionJava   recursos avançados - socket connection
Java recursos avançados - socket connection
 
Java recursos avançados - multithreading
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreading
 
Java recursos avançados - filters
Java   recursos avançados - filtersJava   recursos avançados - filters
Java recursos avançados - filters
 
Java orientação a objetos (variaveis de instancia e metodos)
Java   orientação a objetos (variaveis de instancia e metodos)Java   orientação a objetos (variaveis de instancia e metodos)
Java orientação a objetos (variaveis de instancia e metodos)
 
Java orientação a objetos (introdução)
Java   orientação a objetos (introdução)Java   orientação a objetos (introdução)
Java orientação a objetos (introdução)
 
Java orientação a objetos (introdução) - exercicios
Java   orientação a objetos (introdução) - exerciciosJava   orientação a objetos (introdução) - exercicios
Java orientação a objetos (introdução) - exercicios
 
Java interface gráfica swing
Java   interface gráfica swingJava   interface gráfica swing
Java interface gráfica swing
 
Java interface gráfica layouts
Java   interface gráfica layoutsJava   interface gráfica layouts
Java interface gráfica layouts
 
Java vetores e matrizes
Java   vetores e matrizesJava   vetores e matrizes
Java vetores e matrizes
 

Java orientação a objetos (interfaces)

  • 1. Curso de Java by Antonio Rodrigues Carvalho Neto
  • 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
  • 10. 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
  • 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.