padrÃo command joão paulo paschoal arnaldo correia eric carvalho
TRANSCRIPT
![Page 1: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/1.jpg)
PADRÃO COMMAND
João Paulo Paschoal
Arnaldo Correia
Eric Carvalho
![Page 2: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/2.jpg)
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]
![Page 3: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/3.jpg)
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;
![Page 4: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/4.jpg)
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;
![Page 5: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/5.jpg)
MOTIVAÇÃO
• Imagine a situação de um item de menu: "colar" (Ctrl + V);o Ele não sabe a natureza da informação
que está na Área de Transferência;o Pode ser uma Imagem, um Texto, etc.
![Page 6: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/6.jpg)
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);
![Page 7: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/7.jpg)
DIAGRAMA DE SEQUÊNCIA
![Page 8: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/8.jpg)
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;
![Page 9: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/9.jpg)
CONSEQUÊNCIAS
• Encapsulamento do Comando em um Objeto, podendo portanto serem manipulados e refinados como tal;
![Page 10: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/10.jpg)
DIAGRAMA DE CLASSE
![Page 11: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/11.jpg)
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;
![Page 12: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/12.jpg)
PARTICIPANTES
• Invoker: Envia solicitações ao Command;
• Receiver: Implementa as ações que serão utilizadas pelo ConcreteCommand;
![Page 13: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/13.jpg)
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;
![Page 14: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/14.jpg)
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;
![Page 15: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/15.jpg)
EXEMPLO REAL
![Page 16: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/16.jpg)
EXEMPLO REAL
• Piloto (Client)
•
![Page 17: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/17.jpg)
EXEMPLO REAL
• Carro (Invoker)
![Page 18: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/18.jpg)
EXEMPLO REAL
• Carro (Invoker) continuação…
![Page 19: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/19.jpg)
EXEMPLO REAL
• AcelerarCommand (Concrete Command)
![Page 20: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/20.jpg)
EXEMPLO REAL
• DescerMarchaCommand (Concrete Command)
![Page 21: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/21.jpg)
EXEMPLO REAL
• Rodas (Receiver)
![Page 22: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/22.jpg)
EXEMPLO REAL
• Cambio (Receiver)
![Page 23: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/23.jpg)
EXEMPLO REAL
• Main (Dentro de Piloto)
![Page 24: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/24.jpg)
EXEMPLO REAL
• Saída do Main
![Page 25: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/25.jpg)
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;
![Page 26: PADRÃO COMMAND João Paulo Paschoal Arnaldo Correia Eric Carvalho](https://reader035.vdocuments.com.br/reader035/viewer/2022081514/552fc160497959413d8e8b92/html5/thumbnails/26.jpg)
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.