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

Post on 07-Apr-2016

220 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Bibliografia Básica

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

1 º Princípios: Programe para uma interface, não para um implementação

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.

• Classes dependendo da interface

1 º Princípios: Programe para uma interface, não para um implementação

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.

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

3º Princípio: Encapsular o que pode variar

3º Princípio: Encapsular o que pode variar

• 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

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.

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

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.

Padrão Strategy

• 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

Padrão Strategy

Padrão Strategy

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.

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.

Padrão Builder

• Veja que o construtor dessa classe é extenso e difícil de entender.

Padrão Builder

Padrão Builder

• Veja que agora a regra de criação de objeto NotaFiscal

Padrão Builder

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.

Padrão Composite • Classes composite (nó Galho): que poderão

conter outros componentes;• Classes leaf (nó Folha): que serão

componentes finais na hierarquia;

Padrão Composite

Exercício

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

top related