padrões de projetos orientados a objetos i wolley w. silva
TRANSCRIPT
![Page 1: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/1.jpg)
Padrões de Projetos Orientados a Objetos I
Wolley W. Silva
![Page 2: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/2.jpg)
Ementa Resumida
• Aplicar os Princípios da Orientação a Objetos na Modelagem e Programação;
• Conhecer e Aplicar os Padrões de Projeto (GoF) de acordo com suas categorias:– Padrões de Criação– Padrões Estruturais– Padrões Comportamentais
![Page 3: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/3.jpg)
Bibliografia Básica
![Page 4: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/4.jpg)
Princípios de Design
1. Programe para uma interface, não para um implementação
2. Dar preferencia (favorecer) a composição de objetos à herança de classe
3. Encapsular o que pode mudar
![Page 5: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/5.jpg)
1 º Princípios: Programe para uma interface, não para um implementação
![Page 6: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/6.jpg)
1 º Princípios: Programe para uma interface, não para um implementação
• A interface representa uma abstração do comportamento de uma ou mais classes.
![Page 7: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/7.jpg)
• Classes dependendo da interface
1 º Princípios: Programe para uma interface, não para um implementação
![Page 8: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/8.jpg)
2º Princípio: Prefira a composição de objetos à herança
• Erich Gamma. (GOF)– “Quando a herança é usada cuidadosamente
(apropriadamente), toas as classes derivadas compartilharão sua interface”.
• Quando métodos e/ou atributos herdados não são utilizador por sua classes filhas.
![Page 9: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/9.jpg)
2º Princípio: Prefira a composição de objetos à herança
![Page 10: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/10.jpg)
3º Princípio: Encapsular o que pode variar
![Page 11: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/11.jpg)
3º Princípio: Encapsular o que pode variar
![Page 12: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/12.jpg)
• Olhar para uma classe, enxergar sua responsabilidade, abstrair suas possíveis alterações e criar novas classes.
• Se a sua classe precisa ter mais de uma responsabilidade, divida-as e as associe.
3º Princípio : Encapsular o que pode variar
![Page 13: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/13.jpg)
Padrões de Projeto
• Um Design Pattern é uma técnica de modelagem de classes e objetos que resolve um problema comum a diversos tipos de aplicativos.
![Page 14: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/14.jpg)
GOF – 23 Padrões de Projeto
Propósito
Escopo
Criação Estrutural Comportamental
Classe Factory Method Adapter InterpreterTemplate Method
Objeto Abstract FactoryBuilderPrototypeSingleton
AdapterBridgeCompositeFaçadeFlyweightProxy
Chain of ResposibilityCommandIteratorMediatorMementoObserverStrategyVisitor
![Page 15: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/15.jpg)
Padrão Strategy
• Objetivo:– Encapsulamento de algoritmos que podem variar
com facilidade para prover um comportamento mais adequado para um objeto de acordo com um contexto.
![Page 16: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/16.jpg)
Padrão Strategy
![Page 17: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/17.jpg)
• Os pontos fracos da solução implementada são:– Uso de if's e else's para testar opções de
pagamento e tomar o fluxo correto. – Um método que faz múltiplas coisas. Baixa
coesão.– A cada nova condição adicionada o código tona-se
mais complexo.
Padrão Strategy
![Page 18: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/18.jpg)
Padrão Strategy
![Page 19: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/19.jpg)
Padrão Strategy
![Page 20: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/20.jpg)
Padrão Strategy
• Aspectos positivos– O algoritmo poder ser alterado sem a modificação
da classe Venda.– Novas implementações podem ser criadas e
introduzidas posteriormente.– Polimorfismo na chamada dos método que
executará a regra de pagamento.
![Page 21: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/21.jpg)
Padrão Builder
• Builder propõe que o processo de construção de um objeto complexo, seja separado da definição do objeto, para que possamos ter diferentes algoritmos de construção permitindo diferentes representações para o objeto.
![Page 22: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/22.jpg)
Padrão Builder
• Veja que o construtor dessa classe é extenso e difícil de entender.
![Page 23: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/23.jpg)
Padrão Builder
![Page 24: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/24.jpg)
Padrão Builder
• Veja que agora a regra de criação de objeto NotaFiscal
![Page 25: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/25.jpg)
Padrão Builder
![Page 26: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/26.jpg)
Padrão Composite
• Compor objetos em estrutura de árvore para representarem hierarquias todo-parte.
• Composite permite tratar de maneira uniforme objetos individuais e composições de objetos.
![Page 27: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/27.jpg)
Padrão Composite • Classes composite (nó Galho): que poderão
conter outros componentes;• Classes leaf (nó Folha): que serão
componentes finais na hierarquia;
![Page 28: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/28.jpg)
Padrão Composite
![Page 29: Padrões de Projetos Orientados a Objetos I Wolley W. Silva](https://reader036.vdocuments.net/reader036/viewer/2022062316/570638601a28abb8238ff540/html5/thumbnails/29.jpg)
Exercício
• Aplique os conceitos relembrados aqui resolvendo os exercícios disponíveis na pasta da disciplina.