A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho.

Apresentações semelhantes


Apresentação em tema: "PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho."— Transcrição da apresentação:

1 PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho

2 DEFINIÇÃO "Encapsular uma requisição como um objeto, permitindo que clientes parametrizem diferentes requisições, filas ou requisições de log, e suportar operações reversíveis." [GoF]

3 OBJETIVO Encapsular solicitações em um objeto e utilizar suas ações sem conhecer sua implementação; Possibilitar operações de fazer e desfazer; Geração de logs;

4 MOTIVAÇÃO Algumas vezes é necessário solicitar uma operação sem nenhum conhecimento de como esta será implementada; Podemos simplesmente não conhecer o objeto que vai receber a delegação  para executar aquela operação;

5 MOTIVAÇÃO Imagine a situação de um item de menu: "colar" (Ctrl + V);
Ele não sabe a natureza da informação que está na Área de Transferência; Pode ser uma Imagem, um Texto, etc.

6 MOTIVAÇÃO Solução: encapsular esta tarefa num objeto (um Command) e através dele delegar esta tarefa para outra classe, que por sua vez sabe como executar a operação propriamente dita (o Receiver);

7 DIAGRAMA DE SEQUÊNCIA

8 CONSEQUÊNCIAS Promove o desacoplamento do objeto que solicita uma operação do objeto que vai realizar esta operação propriamente dita; Solicitações em alto nível: o objeto não precisa ter nenhum conhecimento sobre a implementação da operação;

9 CONSEQUÊNCIAS Encapsulamento do Comando em um Objeto, podendo portanto serem manipulados e refinados como tal;

10 DIAGRAMA DE CLASSE

11 PARTICIPANTES Command: Interface para execução de uma operação;
ConcreteCommand: Vincula um objeto Receiver a uma ação e implementa os métodos abstratos da classe Command; Client: Cria um objeto ConcreteCommand e estabelece o seu Receiver;

12 PARTICIPANTES Invoker: Envia solicitações ao Command;
Receiver: Implementa as ações que serão utilizadas pelo ConcreteCommand;

13 EXEMPLO REAL Observe o exemplo real:
Trata-se de um “simulador” de carro de Formula 1; Um Piloto pode executar as ações “acionarPedal” e “mudarMarcha”; O Carro faz o papel do Invoker, gerenciando as ações do piloto;

14 EXEMPLO REAL Para as ações “acionarPedal” existem dois comandos:
AcelerarCommand, e FreiarCommand; Para as ações de “mudarMarcha” existem dois comandos: SubirMarcha, e DescerMarcha;

15 EXEMPLO REAL

16 EXEMPLO REAL Piloto (Client)

17 EXEMPLO REAL Carro (Invoker)

18 Carro (Invoker) continuação…
EXEMPLO REAL Carro (Invoker) continuação…

19 AcelerarCommand (Concrete Command)
EXEMPLO REAL AcelerarCommand (Concrete Command)

20 DescerMarchaCommand (Concrete Command)
EXEMPLO REAL DescerMarchaCommand (Concrete Command)

21 EXEMPLO REAL Rodas (Receiver)

22 EXEMPLO REAL Cambio (Receiver)

23 Main (Dentro de Piloto)
EXEMPLO REAL Main (Dentro de Piloto)

24 EXEMPLO REAL Saída do Main

25 APLICAÇÕES Realizar operações de fazer e desfazer;
Realizar operações de log; Reduzir acoplamento entre requisição e execução de uma operação; Projetar um sistema baseado em operações de alto nível, como operações de transações; 

26 PRÁTICA CALCULADORA Esta atividade simula uma calculadora com duas operações possíveis: Multiplicação ou MultiplicaçãoPorSoma .     A calculadora envia comandos diferentes de acordo com a operação selecionada, encapsulando as solicitações como objeto.   Com base no exemplo demonstrado, e nas classes parcialmente fornecidas, implemente o  que falta para o funcionamento da calculadora.


Carregar ppt "PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho."

Apresentações semelhantes


Anúncios Google