Java orientação a objetos (interfaces)

A
Armando DanielDoor to Door Logistica e Distribuição
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.
1 de 12

Recomendados

JAVA - Herança por
JAVA - HerançaJAVA - Herança
JAVA - HerançaElaine Cecília Gatto
5.1K visualizações45 slides
Classes abstratas e interfaces por
Classes abstratas e interfacesClasses abstratas e interfaces
Classes abstratas e interfacesNécio de Lima Veras
2.6K visualizações22 slides
PCII AULA 3 - INTERFACES EM JAVA por
PCII AULA 3 - INTERFACES EM JAVAPCII AULA 3 - INTERFACES EM JAVA
PCII AULA 3 - INTERFACES EM JAVAETEC Monsenhor Antonio Magliano
1K visualizações14 slides
Java: Heranca e polimorfismo por
Java: Heranca e polimorfismoJava: Heranca e polimorfismo
Java: Heranca e polimorfismoArthur Emanuel
682 visualizações30 slides
Introdução a Linguagem de Programação C por
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
2K visualizações33 slides
Tratamento de exceções por
Tratamento de exceçõesTratamento de exceções
Tratamento de exceçõesAlvaro Oliveira
1.2K visualizações29 slides

Mais conteúdo relacionado

Mais procurados

Architecting iOS Project por
Architecting iOS ProjectArchitecting iOS Project
Architecting iOS ProjectMassimo Oliviero
49.5K visualizações63 slides
Algoritmos por
AlgoritmosAlgoritmos
AlgoritmosRicardo Rodrigues
4.6K visualizações19 slides
Introdução à Linguagem de Programação C por
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
220 visualizações87 slides
POO - Aula 09 - Herança por
POO - Aula 09 - HerançaPOO - Aula 09 - Herança
POO - Aula 09 - HerançaFelipe J. R. Vieira
2.2K visualizações10 slides
Java orientação a objetos (associacao, composicao, agregacao) por
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
64.9K visualizações16 slides
06 abstract-classes por
06 abstract-classes06 abstract-classes
06 abstract-classesAnup Burange
538 visualizações20 slides

Mais procurados(20)

Architecting iOS Project por Massimo Oliviero
Architecting iOS ProjectArchitecting iOS Project
Architecting iOS Project
Massimo Oliviero49.5K visualizações
Algoritmos por Ricardo Rodrigues
AlgoritmosAlgoritmos
Algoritmos
Ricardo Rodrigues4.6K visualizações
Introdução à Linguagem de Programação C por Jose Augusto Cintra
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
Jose Augusto Cintra220 visualizações
POO - Aula 09 - Herança por Felipe J. R. Vieira
POO - Aula 09 - HerançaPOO - Aula 09 - Herança
POO - Aula 09 - Herança
Felipe J. R. Vieira2.2K visualizações
Java orientação a objetos (associacao, composicao, agregacao) por Armando Daniel
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 Daniel64.9K visualizações
06 abstract-classes por Anup Burange
06 abstract-classes06 abstract-classes
06 abstract-classes
Anup Burange538 visualizações
Javapolymorphism por karthikenlume
JavapolymorphismJavapolymorphism
Javapolymorphism
karthikenlume667 visualizações
Algoritmos e lp parte3-pseudocódigo por Mauro Pereira
Algoritmos e lp parte3-pseudocódigoAlgoritmos e lp parte3-pseudocódigo
Algoritmos e lp parte3-pseudocódigo
Mauro Pereira37K visualizações
Encapsulamento em Orientação a Objetos por Daniel Brandão
Encapsulamento em Orientação a ObjetosEncapsulamento em Orientação a Objetos
Encapsulamento em Orientação a Objetos
Daniel Brandão4.6K visualizações
Introdução à programação por João Piedade
Introdução à programação Introdução à programação
Introdução à programação
João Piedade1.6K visualizações
Introdução ao Python por Marcio Palheta
Introdução ao PythonIntrodução ao Python
Introdução ao Python
Marcio Palheta2K visualizações
POO - Aula 10 - Polimorfismo por Felipe J. R. Vieira
POO - Aula 10 - PolimorfismoPOO - Aula 10 - Polimorfismo
POO - Aula 10 - Polimorfismo
Felipe J. R. Vieira6K visualizações
Fundamentos do desenvolvimento mobile - Daniel da cruz do amaral rocha por DanielAmaral70
Fundamentos do desenvolvimento mobile - Daniel da cruz do amaral rochaFundamentos do desenvolvimento mobile - Daniel da cruz do amaral rocha
Fundamentos do desenvolvimento mobile - Daniel da cruz do amaral rocha
DanielAmaral70169 visualizações
Orientação a Objetos em Python por Luciano Ramalho
Orientação a Objetos em PythonOrientação a Objetos em Python
Orientação a Objetos em Python
Luciano Ramalho19.2K visualizações
Algoritmos e linguagem pascal por angelicamenegassi
Algoritmos e linguagem pascalAlgoritmos e linguagem pascal
Algoritmos e linguagem pascal
angelicamenegassi63.6K visualizações
Java: Estruturas de Repetição por Arthur Emanuel
Java: Estruturas de RepetiçãoJava: Estruturas de Repetição
Java: Estruturas de Repetição
Arthur Emanuel2.2K visualizações

Destaque

POO - Aula 13 - Classe Abstrata e Interface por
POO - Aula 13 - Classe Abstrata e InterfacePOO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e InterfaceFelipe J. R. Vieira
7K visualizações11 slides
Java12 por
Java12Java12
Java12Robson Silva Espig
616 visualizações25 slides
Java11 por
Java11Java11
Java11Robson Silva Espig
820 visualizações22 slides
Java orientação a objetos (herança) por
Java   orientação a objetos (herança)Java   orientação a objetos (herança)
Java orientação a objetos (herança)Armando Daniel
923 visualizações12 slides
Java introdução ao eclipse por
Java   introdução ao eclipseJava   introdução ao eclipse
Java introdução ao eclipseArmando Daniel
2.8K visualizações31 slides
Java programação orientada a objetos por
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetosLongJhon
9.2K visualizações61 slides

Destaque(8)

POO - Aula 13 - Classe Abstrata e Interface por Felipe J. R. Vieira
POO - Aula 13 - Classe Abstrata e InterfacePOO - Aula 13 - Classe Abstrata e Interface
POO - Aula 13 - Classe Abstrata e Interface
Felipe J. R. Vieira7K visualizações
Java orientação a objetos (herança) por Armando Daniel
Java   orientação a objetos (herança)Java   orientação a objetos (herança)
Java orientação a objetos (herança)
Armando Daniel923 visualizações
Java introdução ao eclipse por Armando Daniel
Java   introdução ao eclipseJava   introdução ao eclipse
Java introdução ao eclipse
Armando Daniel2.8K visualizações
Java programação orientada a objetos por LongJhon
Java   programação orientada a objetosJava   programação orientada a objetos
Java programação orientada a objetos
LongJhon9.2K visualizações
Java 10 Classes Abstratas Interfaces por Regis Magalhães
Java 10 Classes Abstratas InterfacesJava 10 Classes Abstratas Interfaces
Java 10 Classes Abstratas Interfaces
Regis Magalhães11.2K visualizações
Java introdução ao java por Armando Daniel
Java   introdução ao javaJava   introdução ao java
Java introdução ao java
Armando Daniel2.2K visualizações

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

[CLPE] Design patterns com c# por
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#Felipe Pimentel
625 visualizações49 slides
Flutter do zero a publicacao por
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacaoCinthia Pineroli Galvão
908 visualizações37 slides
Ecosistema spring a_plataforma_enterprise_jav por
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_javJulio Viegas
1.2K visualizações37 slides
AspectJ — Programação orientada a aspectos em Java por
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Javaelliando dias
1K visualizações25 slides
Flutter do zero a publicacao por
Flutter do zero a publicacaoFlutter do zero a publicacao
Flutter do zero a publicacaoCinthia Pineroli Galvão
2.1K visualizações37 slides
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao por
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaotdc-globalcode
877 visualizações37 slides

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

[CLPE] Design patterns com c# por Felipe Pimentel
[CLPE] Design patterns com c#[CLPE] Design patterns com c#
[CLPE] Design patterns com c#
Felipe Pimentel625 visualizações
Ecosistema spring a_plataforma_enterprise_jav por Julio Viegas
Ecosistema spring a_plataforma_enterprise_javEcosistema spring a_plataforma_enterprise_jav
Ecosistema spring a_plataforma_enterprise_jav
Julio Viegas1.2K visualizações
AspectJ — Programação orientada a aspectos em Java por elliando dias
AspectJ — Programação orientada a aspectos em JavaAspectJ — Programação orientada a aspectos em Java
AspectJ — Programação orientada a aspectos em Java
elliando dias1K visualizações
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao por tdc-globalcode
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacaoTDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
TDC2018SP | Trilha Mobile - Flutter: do zero a publicacao
tdc-globalcode877 visualizações
Integração de Tecnologias por elliando dias
Integração de TecnologiasIntegração de Tecnologias
Integração de Tecnologias
elliando dias978 visualizações
Curso de Introdução ao Android Básico por Luiz Carvalho
Curso de Introdução ao Android BásicoCurso de Introdução ao Android Básico
Curso de Introdução ao Android Básico
Luiz Carvalho174 visualizações
Play Framework - FLISOL por grupoweblovers
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
grupoweblovers1K visualizações
Introdução a Linguagem C por apolllorj
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
apolllorj29.4K visualizações
Mini Curso de jQuery Lambda3/Globalcode por Victor Cavalcante
Mini Curso de jQuery Lambda3/GlobalcodeMini Curso de jQuery Lambda3/Globalcode
Mini Curso de jQuery Lambda3/Globalcode
Victor Cavalcante622 visualizações
Android Dev Conference 2017 - Arquitetura para projetos Android por iMasters
 Android Dev Conference 2017 - Arquitetura para projetos Android Android Dev Conference 2017 - Arquitetura para projetos Android
Android Dev Conference 2017 - Arquitetura para projetos Android
iMasters218 visualizações
TDC2016POA | Trilha Android - Testes no Android por tdc-globalcode
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
tdc-globalcode294 visualizações
TDC2016POA | Trilha Android - Testes no Android por tdc-globalcode
TDC2016POA | Trilha Android - Testes no AndroidTDC2016POA | Trilha Android - Testes no Android
TDC2016POA | Trilha Android - Testes no Android
tdc-globalcode93 visualizações
Testes em Aplicações Web com Cactus por Denis L Presciliano
Testes em Aplicações Web com CactusTestes em Aplicações Web com Cactus
Testes em Aplicações Web com Cactus
Denis L Presciliano462 visualizações
Mock Objects por elliando dias
Mock ObjectsMock Objects
Mock Objects
elliando dias684 visualizações
Jdbc e hibernate por Maurício Linhares
Jdbc e hibernateJdbc e hibernate
Jdbc e hibernate
Maurício Linhares909 visualizações

Mais de Armando Daniel

Java code conventions por
Java code conventionsJava code conventions
Java code conventionsArmando Daniel
1.3K visualizações24 slides
Java recursos avançados - streams por
Java   recursos avançados - streamsJava   recursos avançados - streams
Java recursos avançados - streamsArmando Daniel
920 visualizações14 slides
Java recursos avançados - socket connection por
Java   recursos avançados - socket connectionJava   recursos avançados - socket connection
Java recursos avançados - socket connectionArmando Daniel
1.2K visualizações10 slides
Java recursos avançados - multithreading por
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreadingArmando Daniel
1.7K visualizações11 slides
Java recursos avançados - filters por
Java   recursos avançados - filtersJava   recursos avançados - filters
Java recursos avançados - filtersArmando Daniel
398 visualizações8 slides
Java orientação a objetos (variaveis de instancia e metodos) por
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
11.5K visualizações14 slides

Mais de Armando Daniel(11)

Java code conventions por Armando Daniel
Java code conventionsJava code conventions
Java code conventions
Armando Daniel1.3K visualizações
Java recursos avançados - streams por Armando Daniel
Java   recursos avançados - streamsJava   recursos avançados - streams
Java recursos avançados - streams
Armando Daniel920 visualizações
Java recursos avançados - socket connection por Armando Daniel
Java   recursos avançados - socket connectionJava   recursos avançados - socket connection
Java recursos avançados - socket connection
Armando Daniel1.2K visualizações
Java recursos avançados - multithreading por Armando Daniel
Java   recursos avançados - multithreadingJava   recursos avançados - multithreading
Java recursos avançados - multithreading
Armando Daniel1.7K visualizações
Java recursos avançados - filters por Armando Daniel
Java   recursos avançados - filtersJava   recursos avançados - filters
Java recursos avançados - filters
Armando Daniel398 visualizações
Java orientação a objetos (variaveis de instancia e metodos) por Armando 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)
Armando Daniel11.5K visualizações
Java orientação a objetos (introdução) por Armando Daniel
Java   orientação a objetos (introdução)Java   orientação a objetos (introdução)
Java orientação a objetos (introdução)
Armando Daniel1.1K visualizações
Java orientação a objetos (introdução) - exercicios por Armando Daniel
Java   orientação a objetos (introdução) - exerciciosJava   orientação a objetos (introdução) - exercicios
Java orientação a objetos (introdução) - exercicios
Armando Daniel732 visualizações
Java interface gráfica swing por Armando Daniel
Java   interface gráfica swingJava   interface gráfica swing
Java interface gráfica swing
Armando Daniel19.9K visualizações
Java interface gráfica layouts por Armando Daniel
Java   interface gráfica layoutsJava   interface gráfica layouts
Java interface gráfica layouts
Armando Daniel5.9K visualizações
Java vetores e matrizes por Armando Daniel
Java   vetores e matrizesJava   vetores e matrizes
Java vetores e matrizes
Armando Daniel5K visualizações

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.