Buscar

Padrão de Projeto Decorator (com exercício)

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

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

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ê viu 3, do total de 37 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

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

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ê viu 6, do total de 37 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

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

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ê viu 9, do total de 37 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

Prévia do material em texto

Análise e Projeto de Sistemas II
Material das Aulas disponível no AVA
Aula 4
MSc. Karen Figueiredo – karen@ic.ufmt.br
Exemplos de Padrões
-Decorator-
Padrões de Projeto
2
 Categorias dos Padrões:
Um olho de design para o garoto 
da herança...
3
 Examinaremos o uso excessivo da herança
 Como decorar objetos em tempo de execução?
 Objetos livres para novas responsabilidades!
Cenário
4
Cenário
5
Cenário
6
Cenário
7
BOOM de classes! -> problemas de manutenção!
 O que fazer quando muda o preço do leite?
 O que fazer quando querem adicionar uma nova 
cobertura?
Cenário
8
Cenário
9
Cenário
10
Cenário
11
Cenário
12
Problemas?
 Novos condimentos irão forçar a inclusão de novos 
métodos e alterações no método cost
 Novas bebidas que não sigam o padrão de 
beverage terão métodos inúteis
 E se o cliente quiser uma bebida dupla?
Cenário
13
Cenário
14
Cenário
15
Cenário
16
Cenário
17
Decorator
18
 Propósito:
 Agregar responsabilidades adicionais a um objeto
 Fornecer uma alternativa flexível ao uso de subclasses 
para a extensão de funcionalidades
 Também conhecido como:
 Wrapper
Decorator
19
 Motivação:
 Queremos adicionar responsabilidades a objetos 
individuais e não a toda uma classe
 Um cliente não pode controlar como vai querer decorar 
um componente
 Queremos trabalhar com atribuição de responsabilidades 
em cadeia, sempre adicionando novos comportamentos
Decorator
20
 Aplicabilidade:
 Para acrescentar responsabilidades a objetos individuais 
de forma dinâmica e transparente (e sem afetar os outros 
objetos)
 Para responsabilidades que podem ser removidas
 Para evitar a explosão de subclasses por combinações
Decorator
21
 Participantes do Padrão:
...
Decorator
22
 Participantes do Padrão:
• Component: Define a classe que pode ter responsabilidades 
adicionadas dinamicamente
• ConcreteComponent: Define o objeto que pode ter 
responsabilidades atribuídas
• Decorator: Mantém uma referência para o objeto Component, é 
do mesmo tipo que Component; Cada componente pode agregar 
um conjunto de decoradores
Decorator
23
 Participantes do Padrão:
• ConcreteDecorator: 
Possui uma variável de 
instância para o 
Componente a ser 
decorado;
Os decoradores podem 
adicionar novos 
comportamentos 
(ConcreteDecoratorN) 
ou novos estados 
(ConcreteDecoratorA) 
ao componente decorado
Cenário
24
Decorator
25
 Benefícios:
 Maior flexibilidade do que a herança estática
 Evita classes sobrecarregadas no topo da hierarquia
 Sistemas fáceis de customizar
Decorator
26
 Desvantagens:
 Sistemas difíceis de aprender e depurar (grande 
quantidade de pequenos objetos)
Cenário
27
Cenário
28
 Codificando...
Cenário
29
 Codificando...
Cenário
30
 Codificando...
Cenário
31
 Codificando...
Cenário
32
 Codificando...
Dúvidas?
33
Exercício
34
1) Escreva o código para os condimentos Soy e Whip.
2) Faça as alterações necessárias no projeto da Cafeteria 
para definir o tamanho da bebida, incluir essa informação 
na descrição da bebida e calcular o preço da forma 
correta. Cada bebida tem um preço diferente por tamanho, 
por exemplo um HouseBlend P não tem o mesmo preço do 
Expresso P. Use getSize e setSize para os nomes dos 
métodos.
Cenário
35
 Codificando...pedidos!
Dúvidas?
36
Exercício
37
3) Segundo a tabela de preços 
abaixo, diga o valor de cada pedido 
codificado anteriormente 
(beverage, beverage2 e 
beverage3).
4) Mostre como ficariam os pedidos 
de bebidas com tamanhos de 
acordo com as modificações do 
exercício 2 (M + ,50 e G + 1,00).

Outros materiais