Buscar

Padrão de Projeto Strategy

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 40 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Análise e Projeto de Sistemas II
Material das Aulas disponível no AVA
Aula 3
MSc. Karen Figueiredo – karen@ic.ufmt.br
Exemplos de Padrões
-Strategy-
Padrões de Projeto
2
 Categorias dos Padrões:
 Padrões Comportamentais
 Caracterizam a forma como classes ou objetos interagem
 Distribuem responsabilidade
Cenário
3
Cenário
4
Cenário
5
Cenário
6
Cenário
7
Cenário
8
Cenário
9
 Desvantagens ao utilizar herança para reproduzir o 
comportamento de Duck:
 O código é duplicado entre as subclasses
 As alterações de comportamento são difíceis em 
tempo de execução
 É difícil conhecer o comportamento de todos os 
patos
 As alterações podem afetar sem querer outros 
patos
Cenário
10
Cenário
11
Cenário
12
 Alerta de código duplicado!!!
 Interfaces tem métodos abstratos
 Ex.: Toda vez que precisar alterar fly, terá que alterar em 
todos
Cenário
13
Cenário
14
Cenário
15
Cenário
16
Cenário
17
Cenário
18
Cenário
19
Cenário
20
 Agora podemos ter vários patos com 
comportamentos diferentes, mudando apenas o tipo 
=)
Dúvidas?
21
Cenário
22
 O que aconteceria se o código fosse modificado 
dessa forma?
Cenário
23
 Alteração de comportamento dinâmico ;)
public class MiniDuckSimulator {
public static main (String[] args) {
Duck mallard = new MallardDuck();
mallard.performQuack();
mallard.performFly();
mallard.setFlyBehavior(new FlyNoWay());
mallard.performFly();
}
}
Dúvidas?
24
Cenário
25
Strategy
26
 Propósito:
 Definir uma família de algoritmos, encapsular cada uma 
delas e torná-las intercambiáveis
 Strategy permite que o algoritmo varie independente dos 
clientes que o utilizam
 Também conhecido como:
 Policy
Strategy
27
 Motivação:
 Diferentes algoritmos são apropriados em diferentes 
situações
 Tornar mais fácil adicionar novos algoritmos e variar os 
existentes
 Facilitar a manutenção e entendimento
Strategy
28
 Aplicabilidade:
 Muitas classes relacionadas variam no seu 
comportamento
 Você precisa de variantes de um algoritmo
 Um algoritmo usa dados dos quais os clientes não devem 
obter conhecimento
Strategy
29
 Participantes do Padrão:
... ...
Strategy
30
 Participantes do Padrão:
• Context: Uma interface que 
pode definir propriedades e 
operações abstratas que serão 
realizadas pelas suas 
ContextVariants
• ContextVariants: Classes 
que realizam (implementam) as 
propriedades e operações de 
Context das mais diversas 
formas de acordo com as 
necessidades do projeto
...
Strategy
31
 Participantes do Padrão:
...
• Strategy: Define uma classe 
abstrata com uma composição 
de Context que não é 
modificada em todas as suas 
ConcreteStrategy
Deve possuir pelo menos uma 
variável para cada Context
utilizado e uma variável e 
operação para cada variável e 
operação a mais utilizada de 
Context
Strategy
32
 Participantes do Padrão:
...
• ConcreteStrategy: Estende 
Strategy aplicando as variações 
de contexto que são 
adequadas a sua estratégia de 
comportamento, além de 
outros comportamento que 
são diferentes de Strategy
Strategy
33
 Benefícios:
 Famílias de algoritmos relacionados
 Uma alternativa ao uso de subclasses
 Eliminam comandos condicionais da linguagem
Strategy
34
 Desvantagens:
 Aumento do número de objetos
 Custo de comunicação
Exercício
35
1) SimUDuck: Criar o código da Classe Duck e de todas as classes 
para os seguintes patos: Tradicional (MallardDuck), CabeçaVermelha
(RedHeadDuck), Borracha (RubberDuck) e Madeira (DecoyDuck), 
utilizando as famílias FlyBehavior e QuackBehavior do slide 23. Depois 
criar uma classe principal que instancie cada um dos tipos de pássaro 
e faça-os voar e grasnar.
- Lembre-se: todos os patos tem uma aparência (display) diferentes e 
todos podem nadar (swim) da mesma maneira
Mallard RedHead Rubber Decoy
FlyBehavior FlyWithWings FlyWithWings FlyNoWay FlyNoWay
QuackBehavior Quack Quack Squeak MuteQuack
Exercício
36
2) Dadas as classes abaixo, faça o que é pedido:
a) Identifique 1 interface, 1 classe abstrata e 8 classes comuns
b) Organize as classes e crie o diagrama utilizando os relacionamentos 
corretos de generalização, realização e associação
Exercício
37
2) Dadas as classes abaixo, faça o que é pedido:
c) Coloque o método setArma na classe correta
setArma (ComportamentoDeArma x) {
this.arma = x;
}
Exercício
38
2) Dadas as classes abaixo, faça o que é pedido:
d) Crie o código de uma classe principal que simule a luta entre um 
cavaleiro e um monstro. O cavaleiro dá o primeiro golpe com uma 
espada, o monstro golpeia em seguida com um machado e por fim o 
cavaleiro utiliza um arco e flecha.
Exercício
3) Escreva um programa OO que implemente a ordenação de um 
vetor, dando para o usuário a liberdade de escolher a estratégia de 
ordenação (bubble sort, merge sort e quick sort) com o Padrão 
Strategy.
Exercício
40
4) Faça a modelagem de um sistema que permita diferentes 
estratégias de viagem, sabendo que a escolha das estratégias se dará 
pela duração da viagem e objetivo, segundo as tabelas abaixo.
Duração Objetivo
Curta Trabalho
Média Lazer
Longa Trabalho e 
Lazer
Transporte Cruzeiro Aéreo 
(Avião)
Aéreo 
(Balão)
Terrestre 
(Ônibus)
Terrestre 
(Trem)
Duração Longa Curta Curta Média Longa
Objetivo Lazer Trabalho e 
Lazer
Lazer Trabalho e 
Lazer
Trabalho

Outros materiais