21
Thiago Barros 1102133 ADS 640 Padrão Adapter

Thiago silva barros_1102133_ads_640_padrao_adapter

Embed Size (px)

DESCRIPTION

Padrão de Projeto Adapter

Citation preview

Page 1: Thiago silva barros_1102133_ads_640_padrao_adapter

Thiago Barros 1102133 ADS 640

Padrão Adapter

Page 2: Thiago silva barros_1102133_ads_640_padrao_adapter

Problema

Hoje em dia, não é difícil encontrarmos vários tipos de

tomada...

Você certamente já teve problemas para ligar um aparelho...

Page 3: Thiago silva barros_1102133_ads_640_padrao_adapter

Solução

Utilizar um adaptador, conhecido como “t” ou “benjamim”

Page 4: Thiago silva barros_1102133_ads_640_padrao_adapter

Solução

Fazendo uma analogia, podemos dizer que o adaptador muda

a interface da tomada para algo parecido com o que seu

conector espera encontrar.

Mas como utilizar adaptadores em Orientação a Objetos?

Page 5: Thiago silva barros_1102133_ads_640_padrao_adapter

Adaptadores orientados a objetos

Digamos que você tenha que encaixar uma nova biblioteca de classes,

adquirida de outro fornecedor, em um sistema já existente, mas as

interfaces projetadas por esse novo fornecedor sejam diferentes das

adotadas pelo fornecedor anterior...

Page 6: Thiago silva barros_1102133_ads_640_padrao_adapter

Adaptadores orientados a objetos

Você não quer resolver o problema mudando o código existente e

nem mudar o código do fornecedor, então, escreva uma classe que

adapte a interface do novo fornecedor ao formato que o sistema

espera encontrar...

Page 7: Thiago silva barros_1102133_ads_640_padrao_adapter

Adaptadores orientados a objetos

O adaptador funciona como um intermediário, recebendo as

solicitações do cliente e convertendo-as para um formato que faça

sentido para as classes do novo fornecedor.

Page 8: Thiago silva barros_1102133_ads_640_padrao_adapter

Padrão Adapter

Para exemplo, será utilizado o exemplo de patos utilizado no

Capitulo 1 do livro Use a Cabeça Padrões de Projetos (vide

referencias bibliográficas)...

Page 9: Thiago silva barros_1102133_ads_640_padrao_adapter

Padrão Adapter

Aqui esta uma subclasse de Duck, MallardDuck...

Page 10: Thiago silva barros_1102133_ads_640_padrao_adapter

Padrão Adapter

Chegou a hora de conhecer a mais nova ave da turma...

Page 11: Thiago silva barros_1102133_ads_640_padrao_adapter

Padrão Adapter

Agora digamos que alguns objetos Duck estejam em falta e você

queira usar objetos Turkey em seu lugar. Os perus tem uma interface

diferente, logo não podemos utiliza-los do jeito que estão...

Portanto, vamos escrever um Adaptador

Page 12: Thiago silva barros_1102133_ads_640_padrao_adapter

Padrão Adapter

Agora vamos testar nosso adaptador...

Page 13: Thiago silva barros_1102133_ads_640_padrao_adapter

Padrão Adapter

Agora que você sabe o que é um adaptador, vamos voltar e analisar

novamente suas peças...

Page 14: Thiago silva barros_1102133_ads_640_padrao_adapter

Padrão Adapter

O cliente faz uma solicitação ao adaptador chamando um método

nele através da interface alvo...

Page 15: Thiago silva barros_1102133_ads_640_padrao_adapter

Padrão Adapter

O adaptador traduz a solicitação para uma ou mais chamadas de

métodos no adaptado usando a interface desse objeto...

Page 16: Thiago silva barros_1102133_ads_640_padrao_adapter

Padrão Adapter

O cliente recebe os resultados da chamada sem jamais perceber que

há um adaptador fazendo a tradução...

Page 17: Thiago silva barros_1102133_ads_640_padrao_adapter

Exercício

Uma empresa vende somente carros, seu sistema implementa

a classe interface Carro

public interface Carro{

public void quatroRodas();

public void Volante();

}

Page 18: Thiago silva barros_1102133_ads_640_padrao_adapter

Exercício Um exemplo de venda é o Fusca

public class Fusca implements Carro{

public void quatroRodas(){

System.ou.println("4 rodas ok");

}

public void Volante(){

System.ou.println("volante ok");

}

}

Page 19: Thiago silva barros_1102133_ads_640_padrao_adapter

Exercício A empresa começa a vendar motos, e ganha de seu

fornecedor um sistema pronto.

Adapte a interface Moto para a interface Carro

public interface Moto{

public void duasRodas();

public void guidao();

}

public class cg125 implements Moto{

public void duasRodas(){

System.ou.println("2 rodas ok");

}

public void guidao(){

System.ou.println("guidao ok");

}

}

Page 20: Thiago silva barros_1102133_ads_640_padrao_adapter

Exercício - Solução

public class cg125Adapter implements Carro{

Moto moto;

public cg125Adapter(){

this.moto = moto;

}

public void quatroRodas(Moto moto){

moto.duasRodas();

}

public void Volante(){

moto.guidao();

}

}

Page 21: Thiago silva barros_1102133_ads_640_padrao_adapter

Referências

• Livro:

FREEMAN, Eric; FREEMAN, Elisabeth, Use a Cabeça! (Head First)

Padrões de Projetos (Design Patterns) , 2ª Ed..