padrões de projetos orientados a objetos i wolley w. silva

29
Padrões de Projetos Orientados a Objetos I Wolley W. Silva

Upload: marcio-franco-sales

Post on 07-Apr-2016

220 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Padrões de Projetos Orientados a Objetos I Wolley W. Silva

Padrões de Projetos Orientados a Objetos I

Wolley W. Silva

Page 2: Padrões de Projetos Orientados a Objetos I Wolley W. Silva

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

Bibliografia Básica

Page 4: Padrões de Projetos Orientados a Objetos I Wolley W. Silva

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

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

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

• 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

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

2º Princípio: Prefira a composição de objetos à herança

Page 10: Padrões de Projetos Orientados a Objetos I Wolley W. Silva

3º Princípio: Encapsular o que pode variar

Page 11: Padrões de Projetos Orientados a Objetos I Wolley W. Silva

3º Princípio: Encapsular o que pode variar

Page 12: Padrões de Projetos Orientados a Objetos I Wolley W. Silva

• 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

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

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

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

Padrão Strategy

Page 17: Padrões de Projetos Orientados a Objetos I Wolley W. Silva

• 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

Padrão Strategy

Page 19: Padrões de Projetos Orientados a Objetos I Wolley W. Silva

Padrão Strategy

Page 20: Padrões de Projetos Orientados a Objetos I Wolley W. Silva

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

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

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

Padrão Builder

Page 24: Padrões de Projetos Orientados a Objetos I Wolley W. Silva

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

Padrão Builder

Page 26: Padrões de Projetos Orientados a Objetos I Wolley W. Silva

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

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

Padrão Composite

Page 29: Padrões de Projetos Orientados a Objetos I Wolley W. Silva

Exercício

• Aplique os conceitos relembrados aqui resolvendo os exercícios disponíveis na pasta da disciplina.