aula 04b design patterns i - instituto de computaçãora144681/courses/aswi4... · revistas e...
TRANSCRIPT
![Page 1: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/1.jpg)
ASWI4 – Arquitetura de Software
Joice [email protected]
Samuel Martins (Samuka)[email protected]
Aula 04bDesign Patterns I
1
![Page 2: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/2.jpg)
2
Você está aprendendo pintura.Já sabe misturar as cores,conhece diferentes pincéis, telas, tipos de tinta, etc...
Você sabe tudo o que precisa para pintar um quadro.
Adianta ter este conhecimento,se você não souber comoutilizá-lo?
Oi,
eu sou o
Goku!
![Page 3: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/3.jpg)
3
O mesmo vale paraOrientação a Objetos
Saber como usarHerança, Polimorfismo, ...,
não é suficiente
Em quais situações elesdevem ser empregados?
![Page 4: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/4.jpg)
Existem muitas aplicações diferentescom características/problemas semelhantes
4
![Page 5: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/5.jpg)
Existem muitas aplicações diferentescom características/problemas semelhantes
Logo, temos soluções semelhantes para eles
5
![Page 6: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/6.jpg)
Existem muitas aplicações diferentescom características/problemas semelhantes
Logo, temos soluções semelhantes para eles
6
![Page 7: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/7.jpg)
7
![Page 8: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/8.jpg)
8
A gente define isso depois...Vamos a um exemplo,
porque é bem mais legal =D
![Page 9: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/9.jpg)
Prob01: Duck Hunt Game
99
![Page 10: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/10.jpg)
Prob01: Duck Hunt Game
1010
![Page 11: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/11.jpg)
11
![Page 12: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/12.jpg)
Prob01: Duck Hunt Game
1212
![Page 13: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/13.jpg)
13
![Page 14: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/14.jpg)
Princípio de Design
“Identifique os aspectos de sua aplicaçãoque variam e separe-os dos que se
mantém o mesmo”
14
![Page 15: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/15.jpg)
Princípio de DesignEm outras palavras...
“Pegue o que varia e encapsule,então, isto não afetará o resto de seu
código”
Com isso, conseguimos alterar/extender as partes que variam, sem afetar as que não variam...
15
![Page 16: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/16.jpg)
Sabemos que a parte que varia é o método fly().
Que tal representarmos este comportamento em uma interface, deixando suas implementações a cargo de algumas classes separadas?
Duck Hunter Game
16
![Page 17: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/17.jpg)
17
Duck Hunter Game
![Page 18: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/18.jpg)
Prob01: Duck Hunt Game
18
Step 04E se os Patos pudessem quaquarejar?
O Pato-real faz Quack...O Marreco faz Cocorocó...O Pato de Borracha faz Biurl...
18
![Page 19: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/19.jpg)
19
Princípio de Design
“Programe para uma interface,não para uma implementação”
![Page 20: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/20.jpg)
Princípio de Design
→ Use uma interface para representar cada comportamento, algoritmo, ação que varia.
→ Implemente os comportamento em classes concretas, cujo único objetivo de “viver” é a implementação de tal comportamento.
→ As classes que contém os comportamentos não precisam conhecer nenhum detalhe de implementação dos mesmos.
20
![Page 21: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/21.jpg)
Princípio de Design
→ As classes que contém os comportamentos não precisam conhecer nenhum detalhe de implementação dos mesmos.
→ Elas estão delegando seu comportamento para a interface
→ Elas também não estão presas a uma implementação específica
→ O comportamento do objeto pode ser alterado em execução do programa
21
![Page 22: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/22.jpg)
22
"Programar para uma interface,na verdade significa
programar para um supertipo"
![Page 23: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/23.jpg)
Programa para uma Interface/Supertipo
→ Você não precisa, necessariamente, usar uma Java Interface
→ A ideia é explorar o poliformismo programando para um supertipo → Para que o objeto, em tempo de execução, não fique preso a uma implementação específica
→ O supertipo pode ser representado por uma Interface ou Classe Abstrata
23
![Page 24: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/24.jpg)
// Programar para uma ImplementaçãoProfReservation profRes = new ProfReservation();profRes.makeReservation();
// Programar para uma InterfaceReservation res = new ProfReservation();res.makeReservation();
24
![Page 25: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/25.jpg)
Classe Abstrata ou Interface?
Classe Abstrata:→ Quando a abstração for um conceito (algo que precisa ser refinado ou especializado)
Interface:→ Quando a abstração for um comportamento (algo que uma classe deve saber fazer)
25
![Page 26: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/26.jpg)
Classe Abstrata ou Interface?
Imagine um jogo no qual existem naves que se movem.
Se sua abstração representa uma nave, então você está representando um conceito e deve utilizar uma classe abstrata.
26
![Page 27: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/27.jpg)
Classe Abstrata ou Interface?
Imagine um jogo no qual existem naves que se movem.
Mas, se sua abstração representa algo que se move, então o que está sendo abstraído é um comportamento e a melhor solução é usar uma interface.
27
![Page 28: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/28.jpg)
28
Princípio de Design
“Prefira Composição em vez de Herança”
![Page 29: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/29.jpg)
Princípio de Design→ Em vez de herdar o comportamento, estamos compondo-o
→ A Composição nos dá maior flexibilidade
→ Conseguimos encapsular uma família de comportamentos, algoritmos, ações, ...
→ O comportamento pode ser mudado em tempo de execução
→ Tudo isso facilita a manutenção futura do código
29
![Page 30: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/30.jpg)
30
“Muito prazer, eu sou o Strategy!”
![Page 31: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/31.jpg)
Strategy→ Define uma família de algoritmos (comportamentos), encapsula cada um, e os faz intercambiáveis (de fácil mudança).
31
![Page 32: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/32.jpg)
StrategyDesvantagem:→ Aumento do número de classes
→ Complexidade na criação do Objeto→ Devemos garantir que todos os comportamentos foram atribuídos
32
![Page 33: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/33.jpg)
33
![Page 34: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/34.jpg)
Design Patterns→ Soluções para determinados problemas em determinados contextos.
→ Descreve soluções bem estabelecidas
→ Não basta ser uma solução recorrente→ Precisa ser uma boa solução
34
![Page 35: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/35.jpg)
Design PatternsA ideia vem do trabalho do arquiteto Christopher Alexander
35
![Page 36: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/36.jpg)
Design PatternsIniciou-se em OO com o livro
36
![Page 37: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/37.jpg)
Design Patterns→ Não se refletem em pedaços de códigos ou componentes que são reutilizáveis de forma igual em diversas aplicações
→ Eles são um conhecimento que deve estar na cabeça dos desenvolvedores/arquitetos de software.
→ Avaliar o contexto e o problema que querem resolver→ Utilizar com parcimônia os padrões mais adequados
37
![Page 38: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/38.jpg)
38
“Quanto mais padrões eu utilizar, melhor vai ficar o meu código?”
![Page 39: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/39.jpg)
39
“Quanto mais padrões eu utilizar, melhor vai ficar o meu código?”NÃO
![Page 40: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/40.jpg)
Exercício: Modele e ImplementeA livraria Yoda vende diversos artigos consistindo de Livros, Revistas e Jogos.Há livros e revistas impressos e digitais.A livraria possui Jogos de Tabuleiro e Jogos de Vídeo Game, sendo o último o jogo físico ou digital.
No pagamento a vista, temos a seguinte política de descontos:Livros, Revistas Físicos e Jogos de Tabuleiro: 30% de desconto.Livros e Revistas Digitais: 15% de desconto.Não há desconto para Jogos de Vídeo Game.
40
![Page 41: Aula 04b Design Patterns I - Instituto de Computaçãora144681/courses/aswi4... · Revistas e Jogos. Há livros e revistas impressos e digitais. A livraria possui Jogos de Tabuleiro](https://reader034.vdocuments.mx/reader034/viewer/2022042301/5ecc0f11e3f5fe2ff061cc7a/html5/thumbnails/41.jpg)
Referências→ FREEMAN, Eric et al. Head first design patterns. " O'Reilly Media, Inc.", 2004
→ GUERRA, Eduardo. Design Patterns com Java: Projeto orientado a objetos guiado por padrões. Editora Casa do Código, 2014.
→ Apostila de Design Patterns da Caelumhttp://www.caelum.com.br/apostila-java-testes-xml-design-patterns/
41