Aula 2 - Introdução A Padrões de Projeto PDF

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 16

Aula 2 – Introdução à

Padrões de Projeto
A mudança de foco (para padrões) vai ter um
efeito profundo e duradouro no modo pelo qual
escrevemos programas.
- Ward Cunningham e Ralph Johnson

Análise e Projeto de Sistemas - ADS


Profa. Daniela Remião de Macedo
Padrões de Projeto
• 70’s - Padrões Arquiteturais
- Christopher Alexander
“Cada padrão descreve um problema que ocorre
freqüentemente no nosso ambiente, e então descreve o
núcleo de uma solução para tal problema. Esse núcleo
pode ser utilizado um milhão de vezes, sem que haja duas
formas de utilização iguais.”
Christopher Alexander

• 80’s - Padrões de Software


- Kent Beck e Ward Cunnimgham

Análise e Projeto de Sistemas - ADS


Padrões de Projeto OO
• 1995 – Design Patterns
• Gamma, Heln, Johnson, Vlissides
(Gangue-Of-Four - GoF)
• Padroes GoF
• descrevem 23 padrões de POO

• Applying UML and Patterns


• Craig Larman
• Padrões GRASP (General Responsability
Assignment Software Patterns)
• define 9 principios basicos de POO
Análise e Projeto de Sistemas - ADS
Padrões de Projeto
• Nome
descreve o nome do padrão de projeto
• Descrição do Problema
Situa o padrão de projeto dentro de uma familia de problemas ao
qual pode ser utilizado.
• Solução Proposta
apresenta uma solução genérica que pode ser reutilizada no projeto
de software
• Exemplo de Solução
fornece exemplos concretos da utilização do padrão para a solução de
um problema real
• Conseqüências
mostra os resultados da utilização do padrão de projeto, informando
sobre impactos causados em sistemas de software no momento de
sua utilização
Análise e Projeto de Sistemas - ADS
Padrões de Projeto
• Problemas tendem a acontecer diversas vezes
desenvolvimento de software
• É uma solução genérica para uma classe de problemas
• Maneira efetiva de aprender com a experiência de
outros
• Seu uso deve contribuir para reutilização, flexibilização
e modularização em processos de desenvolvimento de
software OO
• Possui descrição estruturada e catalogada, de maneira a
oferecer clareza a seus usuários

Análise e Projeto de Sistemas - ADS


Padrões GRASP
• Information Expert
• Creator
• Controller
• Low Coupling
• High Cohesion
• Polymorphism
• Pure Fabrication
• Indirection
• Protected variations

Análise e Projeto de Sistemas - ADS


Padrões GoF
• Os padrões GoF foram divididos em três categorias:

1. Criacionais: procuram separar a operação de uma


aplicação de como os seus objetos são criados.
2. Estruturais: provêem generalidade para que a estrutura
da solução possa ser estendida no futuro.
3. Comportamentais: utilizam herança para distribuir o
comportamento entre subclasses, ou agregação e
composição para construir comportamento complexo a
partir de componentes mais simples.

Princípios de Análise e Projeto de Sistemas com UML - 3ª edição

Análise e Projeto de Sistemas - ADS


Padrões GoF
Criacionais Estruturais Comportamentais

Abstract Factory Adapter Chain of Responsibility


Builder Bridge Command
Factory Method Composite Interpreter
Prototype Decorator Iterator
Singleton Façade Mediator
Flyweight Memento
Proxy Observer
State
Strategy
Template Method
Visitor

Princípios de Análise e Projeto de Sistemas com UML - 3ª edição

Análise e Projeto de Sistemas - ADS


Strategy

Nome: Strategy
Problema: Como projetar algoritmos ou políticas
variadas, mas relacionadas?
Como projetar para ter a capacidade de
alterar esses algoritmos ou políticas?

Solução: Defina cada algoritmo/política/estratégica


em uma classe separada, com uma interface
comum.

Análise e Projeto de Sistemas - ADS


Strategy - Modelo Básico

Strategy - Interface comum para todas as classes (variações concretas) que


definem os diversos comportamentos esperados
ConcreteStrategy - Classes que implementam os algoritmos que devem atender a
cada contexto
Context - Classe onde os objetos ConcreteStrategy serão instanciados

Análise e Projeto de Sistemas - ADS


Strategy - Aplicação Prática
• Problema:
Como projetamos um sistema OO capaz de oferecer descontos
variados em uma venda efetuada. A estratégia para determinar o
desconto na venda pode variar, podendo ser um desconto percetual
sobre o valor total da venda, ou um valor fixo sobre o total, ou um
valor especifico caso o total da venda atinja um limite determinado, ou
muitas outras variações.

• Solução:
Como o comportamento do estabelecimento de preços varia de acordo
com a estratégica (ou algoritmo) criamos várias classes PricingStrategy,
cada uma com um método polimórfico getTotal. Cada método getTotal
será diferente. PercentDiscountPricingStrategy dará um percentual de
descontos, etc..

Análise e Projeto de Sistemas - ADS


Strategy - Aplicação Prática

Análise e Projeto de Sistemas - ADS


Strategy - Aplicação Prática

Análise e Projeto de Sistemas - ADS


Strategy - Aplicação Prática

Análise e Projeto de Sistemas - ADS


Strategy - Consequências

• Famílias de algoritmos relacionados;


• Elimina comandos condicionais;
• O cliente deve conhecer diferentes estratégias;
• Custo de comunicação entre o contexto e a estratégia;
• Aumento do número de objetos;
• Utilização de todos os algoritmos nem sempre ocorre;
• Facilidade de manutenção
• Facilidade de entendimento da regra de negócio.

Análise e Projeto de Sistemas - ADS


Referências Bibliográfica

• BEZERRA, Eduardo. Princípios de Análise e Projeto de


Sistemas com UML. Rio de Janeiro,: Elsevier, 2002.

• GAMMA, Erich. Padrões de Projeto – Soluções Reutilizáveis


de software orientados a objetos. Porto Alegre: Bookman,
2007.

• LARMAN, Craig. Utilizando UML e padrões: uma introdução à


análise e ao projeto orientados a objetos e ao
desenvolvimento interativo. Porto Alegre: Bookman, 2007.

Análise e Projeto de Sistemas - ADS

Você também pode gostar