design patterns (padrões de projeto)...unidade 05 – design patterns (padrões de projeto) 3...

56
Unidade 05 – Design Patterns (Padrões de Projeto) 1 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Design Patterns (Padrões de Projeto) Instituto Federal de Educação, Ciência e Tecnologia do Triângulo Mineiro Prof. Edwar Saliba Júnior Janeiro de 2020

Upload: others

Post on 26-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 1

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Design Patterns(Padrões de Projeto)

Instituto Federal de Educação, Ciência e Tecnologia do Triângulo MineiroProf. Edwar Saliba Júnior

Janeiro de 2020

Page 2: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 2

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Pergunta● Qual é a única coisa com a qual

podemos contar no desenvolvimento de software?● Não importa onde você trabalha, o que está

criando ou em que linguagem está programando, qual é a constante que estará sempre com você?– ALTERAÇÃO

Page 3: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 3

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Manutenção● Como foi visto no slide anterior, uma das poucas

certezas que você terá sobre o sistema que desenvolver, é a de que ele será alterado em algum momento;

● Alterações podem ser feitas por vários motivos:● implementação de melhorias;● correção de inconsistências;● melhoria de performance e/ou utilização de

recursos e● etc.

Page 4: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 4

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrões de Projeto● Um Padrão de Projeto (PP) nomeia, abstrai e identifica os

aspectos-chave de uma estrutura de projeto comum para torná-la útil para a criação de projeto orientado a objetos reutilizável;

● O PP identifica as classes e instâncias participantes, seus papéis, colaborações e distribuição de responsabilidades;

● Cada PP focaliza um problema ou tópico particular de projeto orientado a objetos;

● O PP descreve em que situação pode ser aplicado, se ele pode ser aplicado em função de outras restrições de projetos e as consequências, custos e benefícios de sua utilização.

Gamma et al. (2000, p. 20)

Page 5: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 5

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Observer● Contextualização:

● Você sabe como as assinaturas de jornais e revistas funcionam?

● Funcionam assim:

– uma editora começa a publicar jornais;

– você assina o jornal de uma editora e sempre recebe as novas edições;

– enquanto você for assinante, continuará recebendo as novas edições;

– você cancela a assinatura e os jornais param de ser entregues;

– enquanto a editora continua no negócio, entregando para hotéis, pessoas, companhias aéreas e etc.

Adaptado de Freeman e Freeman (2007, p. 56)

Page 6: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 6

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Observer● Editora + assinantes = “padrão observer”

● Se você entende a assintura de jornais, deve entender o padrão observer, onde chamamos a editora de SUBJECT e os assinantes de OBSERVER.

Adaptado de Freeman e Freeman (2007, p. 56)

Os objetos OBSERVERque foram registrados (assinaram) no objeto

SUBJECT, receberãoas atualizações, quan-

do elas ocorrerem.

O objeto SUBJECTgerencia dados e,

sempre que houvermudanças, ele

notifica os objetosOBSERVER. Os objetos que não

foram registrados (ou não assinaram) no objeto SUBJECT, não receberão

as atualizações.

Page 7: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 7

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Observer

Page 8: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 8

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Observer● Exemplo utilizando recursos que

funcionam até o Java 8:● código-fonte

● Exemplo utilizando recursos que funcionam do Java 9 em diante:● código-fonte

Page 9: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 9

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Decorator● Contextualização:

● O Starbuzz Coffe, ficou conhecido como a lanchonete com o crescimento mais rápido da região. Se você já viu um na sua esquina, olhe para o outro lado da rua: você verá outro;

● Como eles expandiram muito rápido, estão tendo dificuldade de atualizar seu sistema de pedidos para corresponder a suas ofertas de bebidas;

● Quando entraram no negócio, projetaram as classes do sistema assim (próximo slide):

Adaptado de Freeman e Freeman (2007, p. 82)

Page 10: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 10

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Decorator● Diagrama parcial do sistema:

Adaptado de Freeman e Freeman (2007, p. 82)

Observe que o método “cost” está em itálico. Ou seja, é um

método abstrato.

Cada método “cost” calcula o preço dotipo do café que

representa.

Page 11: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 11

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Decorator● Na Starbuzz Coffe, além do seu café, você também pode pedir

vários complementos, como:

1) leite com espuma,

2) soja e/ou

3) moca (também conhecido como chocolate) misturado com leite batido;

● Como o Starbuzz cobra um valor para cada complemento, então, eles realmente precisam incluí-los no sistema de pedidos;

● No próximo slide você verá uma alternativa criada para incluir os 3 complementos no sistema. Ao verificar o diagrama, pense no que seria necessário para incluirmos mais um complemento (caramelo ou toffee em inglês) no sistema.

Adaptado de Freeman e Freeman (2007, p. 82)

Page 12: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 12

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Decorator

Adaptado de Freeman e Freeman (2007, p. 82)

Cada método “cost” calcula o preço dotipo do café mais o

preço do(s) complemento(s).

Page 13: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 13

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Decorator● Se você calculou bem, então, descobriu

que para colocarmos mais um complemento no sistema:● o caramelo (toffee)

seria necessário a criação de mais 32 subclasses;

● Já pensou se tivéssemos que colocar mais 10 complementos?

Page 14: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 14

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Decorator● Para o problema anterior, ainda há uma outra

solução:

Para esta soluçãoo método “cost”

agora é ummétodo normal.Ou seja, possuiimplementação.

O método “cost” aqui, calculará o

preço do(s) complemento(s).

Cada método “cost” das subclasses

somará o preço dotipo do café mais o

preço devolvidopelo método “cost”

da superclasse..

Adaptado de Freeman e Freeman (2007, p. 84)

Page 15: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 15

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Decorator● Princípio de Projeto de Software:

“As classes devem estar abertas para extensão, mas fechadas para modificação.” (Freeman e Freeman, 2007, p. 86)

Page 16: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 16

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Decorator● É fundamental que respeitemos o

“Princípio de Projeto de Software” (do slide anterior);

● Porém, agora temos que acrescentar mais um complemento no sistema:

o caramelo (toffee).

● Como faremos?

Não faremos! Não dá pra fazer.

Page 17: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 17

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Decorator● Para casos como este, usamos então o padrão

Decorator, vamos começar com uma bebida (um objeto) e decorá-la com os complementos (outros objetos):● Por exemplo:

– pegamos um objeto DarkRoast,– decoramos com um objeto Moca,– decoramos também com um objeto Soy e– chamamos o método “cost” para gerar o preço.

● A pergunta é: como decorar um objeto?

Page 18: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 18

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Decorator● Começamos com o objeto DarkRoast

● O cliente quer Moca, então criamos um objeto Moca e englobamos DarkRoast nele

● O cliente também quer Whip, então, criamos um decorator Whip e englobamos Moca nele

Adaptado de Freeman e Freeman (2007, p. 88)

Page 19: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 19

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Decorator

Adaptado de Freeman e Freeman (2007, p. 89)

Primeiro chamamos“cost” no decoratormais externo, Whip.

1,29

Item Preço

BlackRoast

0,99

Moca 0,20

Whip 0,10

Soy 0,15

0,99

1,19

Page 20: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 20

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Decorator

Adaptado de Freeman e Freeman (2007, p. 89)

Os quatro objetosconcretos, um paracada tipo de café.

Classe abstrata.

Método abstrato.

Método abstrato.

Page 21: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 21

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Factory● Contextualização:

● Ao codificar para uma interface, você sabe que pode se isolar de várias alterações que podem acontecer em um sistema;

● o código é escrito para uma interface, ele funcionará com qualquer classe nova que implemente esta interface por meio de polimorfismo;

● Se o código possuir muitas classes concretas (aquelas criadas diretamente com o comando new), então este poderá lhe trazer grandes problemas; porque o código pode ter que ser alterado à medida que novas classes concretas precisarem ser adicionadas;

● Assim, seu código não será “fechado para modificação”. Ou seja, para estendê-lo com novos tipos concretos, ele terá que ser reaberto.

Adaptado de Freeman e Freeman (2007, p. 105)

Page 22: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 22

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Factory● Se o seu código

possuir uma classe como esta, então, só poderá ser vendido um único sabor de pizza;

Adaptado de Freeman e Freeman (2007, p. 105)

Page 23: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 23

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Factory● Para resolvermos o

problema exposto no slide anterior, basta fazermos a seguinte modificação no código;

● Porém criamos outro problema:

● se criarmos novos sabores de pizzas ou se deixarmos de oferecer algum, teremos que modificar o código preexistente.

Adaptado de Freeman e Freeman (2007, p. 105)

Parte quepode variar.

Parte fixa.

Page 24: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 24

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

● Construindo uma “Simple Factory” de pizzas:

Padrão Factory

Adaptado de Freeman e Freeman (2007, p. 107)

Classe abstrata.

Page 25: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 25

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

● Desta maneira, apesar da modularização, ainda assim, se criarmos ou deixarmos de oferecer pizzas, o código terá que ser alterado.

Padrão Factory

Adaptado de Freeman e Freeman (2007, p. 107)

Separamos a parte que

pode variar.

Page 26: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 26

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Factory

Adaptado de Freeman e Freeman (2007, p. 109)

Classe abstrata.

Page 27: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 27

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

● Para deixar o código mais flexível, podemos fazer assim:

Padrão Factory

Adaptado de Freeman e Freeman (2007, p. 111)

Eliminamos a classe “SimplePizzaFactory”, o método “createPizza” que estava na

classe migrará para a classe “PizzaStore”e se tornará um método abstrato.

Esta mudança possibilita uma flexibilizaçãopara possíveis alterações no software. Epassa a responsabilidade de “criação de pizza” para as classes que herdarem da

classe PizzaStore, que também é abstrata.

Page 28: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 28

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Factory

Adaptado de Freeman e Freeman (2007, p. 109)

Classe abstrata.

Método abstrato.

Classe abstrata.

Esta flexibilização do código-fontepossibilitará a criação de novas lojas“stores” que poderão produzir pizzas

personalizadas, adaptadas, para asua região de atendimento.

Page 29: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 29

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Factory

Adaptado de Freeman e Freeman (2007, p. 119)

Page 30: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 30

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Factory● Pode-se utilizar este padrão para tudo

que tem variação, por exemplo, no projeto da pizzaria (mostrado nos slides anteriores), a pizza é composta por:● sauce (molho), que podem ter diversos

tipos e● dough (massa), que também podem ter

diversos tipos.● Para os dois itens acima poderíamos

criar uma Factory para cada um.

Page 31: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 31

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Singleton● Contextualização:

● Singleton especifica que apenas uma instância da classe pode existir, e esta será utilizada por toda a aplicação. Dessa forma temos apenas um ponto de acesso central a esta instância da classe. (OPUS-SOFTWARE, 2020)

● Útil:

● Em conexão com banco de dados, evita-se criar diversas conexões simultâneas;

● E em qualquer situação onde houver problema com várias instâncias de um mesmo objeto.

Page 32: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 32

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Singleton - ClássicoNão é seguropara acessosconcorrentes

múltiplos.

Page 33: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 33

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Singleton - SincronizadoA sincronização garanteque dois segmentos decódigo não executem o

mesmo método ao mesmotempo. Um segmento

aguarda o outro executarpara depois executar.

Tem um elevado custode tempo de

processamento.

Page 34: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 34

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Singleton - Estático

De acordo com Freeman eFreeman (2007, p. 158),

criar e instanciar umSingleton num inicializador

estático, torna o códigoseguro em ambientes

multithreading.

Page 35: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 35

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Singleton - Volatile

Desta forma sincronizamosuma única vez, acabando

com o problema apresentadoanteriormente de morosidade.

Esta implementação sófunciona a partir do

Java 5.

Um atributo “volatile” ésempre atualizado dire-

tamente na memóriaprincipal. Diferentemente

dos demais que podem ficarpor um tempo na memória

cache do processador.(UTLUIZ, 2020)

Page 36: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 36

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão SingletonAtributo estático.

Construtor privado.

Método estático.

Page 37: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 37

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command● Definição:

● O Padrão Command encapsula uma solicitação como um objeto, o que lhe permite parametrizar outros objetos com diferentes solicitações, enfileirar ou registrar solicitações e implementar recursos de cancelamento de operações. (Freeman e Freeman, 2007, p. 178)

Page 38: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 38

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command● o Command é um padrão no qual um

objeto é usado para encapsular toda informação necessária para executar uma ação ou acionar um evento em um momento posterior. (Wikipédia, 2020)

Page 39: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 39

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command● Estrutura do padrão:

Adaptado de Wikipédia (2020)

Page 40: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 40

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 1

Page 41: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 41

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 1

Page 42: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 42

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 1

Page 43: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 43

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 1

● Apresentação do código-fonte anterior e seu funcionamento, no Eclipse e no S.O.

Page 44: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 44

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 2

Adaptado de Freeman e Freeman (2007, p. 169)

Controle remoto programável:

Page 45: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 45

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 2● O controle remoto do slide anterior é um controle universal

para residências;

● O fornecedor do controle também fornece diversas classes, uma para cada tipo de eletrodoméstico que pode ser controlado pelo controle remoto;

● Assim sendo, temos 2 problemas:

● o controle tem limite de 7 equipamentos, pois, só tem 7 slots programáveis e

● como cada eletrodoméstico foi feito por uma empresa diferente, então, cada qual desenvolveu a classe de controle do equipamento produzido da maneira que lhe conveio, ou seja, sem um padrão (vejamos o slide a seguir).

Page 46: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 46

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 2● Vejamos as classes e seus respectivos métodos, dos

diversos aparelhos que poderão ser ligados e desligados pelo controle remoto:

Page 47: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 47

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 2● Controle Remoto

Adaptado de Freeman e Freeman (2007, p. 180)

Page 48: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 48

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 2

Page 49: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 49

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 2Classes ConcreteCommand

Interface Command

Page 50: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 50

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 2Classes ConcreteCommand

Page 51: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 51

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 2Classes ConcreteCommand

Page 52: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 52

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 2

Classes ConcreteCommand

Page 53: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 53

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 2Classes Receivers

Page 54: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 54

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 2

Classe Invoker

Page 55: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 55

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Padrão Command 2Classe Application

Page 56: Design Patterns (Padrões de Projeto)...Unidade 05 – Design Patterns (Padrões de Projeto) 3 Análise e Projeto Orientados a Objetos Prof. Edwar Saliba Júnior Manutenção Como

Unidade 05 – Design Patterns (Padrões de Projeto) 56

Análise e Projeto Orientados a ObjetosProf. Edwar Saliba Júnior

Bibliografia● COLLARES, Paulo. Exemplo do Padrão de Projeto ‘Comando’: Controle

Remoto. Disponível em: <https://www.paulocollares.com.br/programacao/exemplo-do-padrao-de-projeto-comando-controle-remoto/>. Acesso em: 31 jan. 2020.

● FREEMAN, Eric; FREEMAN, Elisabeth. Use a Cabeça! Padrões de Projetos (design Patterns). 2. ed. Rio de Janeiro: Alta Books, 2007.

● GAMMA, Erich; HELM, Richard; JOHNSON, Ralph; VLISSIDES, John. Padrões de Projeto: soluções reutilizáveis de software orientado a objetos. Porto Alegre: Bookman, 2000.

● OPUS-SOFTWARE. Singleton Design Pattern: o que é, onde usar e quais as vantagens. Disponível em: <https://www.opus-software.com.br/singleton-design-pattern/>. Acesso em: 28 jan. 2020.

● UTLUIZ. Qual a finalidade do Transient e Volatile no Java?. Disponível em: <https://pt.stackoverflow.com/questions/116047/qual-a-finalidade-do-transient-e-volatile-no-java>. Acesso em: 28 jan. 2020.

● WIKIPÉDIA. Command. Disponível em: <https://pt.wikipedia.org/wiki/Command>. Acesso em: 29 jan. 2020.