Padrões de Projeto

Propaganda
Padrões de Projeto
Prof. Jefersson Alex dos Santos ([email protected])
http://www.dcc.ufmg.br/~jefersson
Apresentação
 Conceitos
–
–
Definição
Ponto de vista prático
 História
 Padrões de Projeto Conhecidos
–
–
Padrões GoF
Outros Padrões
 Aplicações (JFC e SEAD)
 Conclusão
Conceitos
 Segundo o dicionário Aurélio:
–
Padrão sm. 1. Modelo oficial de
pesos e medidas. 2. O que serve de
base ou norma para avaliação,
medida. 3. Objeto que serve de
modelo à feitura de outro. 4. Desenho
decorativo estampado em tecido ou
outra superfície.
Conceitos
 Para a Engenharia de Software:
–
–
Um padrão é uma combinação
recorrente de elementos de
modelagem que ocorrem em algum
contexto;
Padrões podem ser aplicados nas
diversas etapas do desenvolvimento
de software.
Conceitos
 Fases de Desenvolvimento de
Software:
Ciclo de vida clássico
Padrões de Análise
 Um padrão de análise é qualquer
parte de uma especificação de
requisitos que se origina em um
projeto e pode ser reutilizada em
diversos projetos.
Padrões de Análise
 Exemplo:
–
Padrão para reservas e locação de
entidades reutilizáveis (quarto de
hotel, aluguel de automóveis, filmes,
etc).
Padrões de Projeto
 Os padrões de projeto são
arquiteturas comprovadas para
construir software orientado a
objetos;
 A idéia é a mesma dos padrões de
projeto aplicadas na arquitetura.
Padrões: Análise X Projeto
 Padrões de análise são
dependentes da aplicação.
Descrevem aspectos típicos de
algum domínio ou aplicação;
 Padrões de projeto estão mais
próximos da implementação. Focam
interfaces, criação de objetos e
propriedades estruturais.
Framework X Padrões
 Atenção:
–
–
Padrões de Projeto e frameworks
são coisas diferentes;
Frameworks são estruturas de
suporte bem definidas em que um
outro projeto de software pode ser
organizado e desenvolvido .
Ponto de Vista Prático
 Padrões de projeto não são
algoritmos;
 Padrões de projeto não oferecem
componentes;
 Padrões de projeto oferecem
soluções comprovadamente
eficientes;
 Catálogos de Padrões funcionam
como “Livros de Receitas”.
Ponto de Vista Prático
 Software:
Bolo de Chocolate
Ponto de Vista Prático
 Catálogos de Padrões de Projeto:
Livros de Receitas
Ponto de Vista Prático
 Framework:
“Bolo de Caixinha”
Design Patterns: FAQs
 Pra que serve?
 Por que utilizar?
 Compensa?
 Quais as vantagens?
 Quem deve utilizar?
 Como surgiram?
 Existem aplicações bem
sucedidas?
Design Patterns: Vantagens
 Segundo Deitel & Deitel:
–
–
–
–
–
Ajudam a construir software
confiável com arquiteturas
comprovadas;
Promovem reutilização de projeto;
Ajudam a identificar erros e
armadilhas comuns;
Estabelecem um vocabulário comum
entre os desenvolvedores;
Encurtam a fase de projeto.
Design Patterns: História
 Década de 1980:
–
–
–
–
Linguagem OO: SmallTalk;
C++ “engatinhava”;
Programação de Frameworks era
bastante popular;
Alguns frameworks, que hoje
chamados de padrões, surgiram.
Exemplo: MVC.
Design Patterns: História
 Década de 1990:
–
–
–
Linguagens OO: C++, Java;
Primeiras formalizações;
Erich Gamma, Richard Helm, Ralph
Johnson e John Vlissides
escreveram:
●
Design Patterns: Elements of Reusable
Object-Oriented Software – “The GoF
Book”.
Design Patterns: História
 Atualmente:
–
–
–
Novos projetos são criados a todo
momento;
Há muitos projetos catalogados na
Internet;
Novos conceitos relacionam-se
diretamente:
●
●
XP (eXtreme Programming –
Programação Extrema);
Refactoring (Refatoração).
Os Padrões GoF
 A “turma dos quatro” descreveu,
em seu livro, 23 padrões de
projeto;
 Esses padrões foram divididos
em três categorias:
–
–
–
Criacionais;
Estruturais;
Comportamentais.
Padrões de Criação
 Lidam com a melhor maneira de
instanciar objetos;
 O aplicativo não deve depender
de como os objetos são criados
ou arranjados;
 Abstrair o processo de criação em
uma “classe criadora” pode tornar
o software mais flexível e
genérico.
Padrões de Criação
PADRÃO
DESCRIÇÃO
Abstract Factory
É uma fábrica de objetos que
retorna outras fábricas.
Builder
Separa a construção de um objeto
complexo de sua representação.
Factory Method
Retorna uma instância dentre
muitas possíveis classes,
dependendo dos dados providos.
Prototype
Permite a um objeto devolver uma
cópia de si mesmo para um objeto
que o solicite.
Singleton
Garante que apenas uma única
instância de uma classe vai existir.
Padrões Estruturais
 Descrevem maneiras comuns de
organizar classes e objetos de um
sistema:
–
–
A herança pode ser utilizada para
tornar mais utilizáveis as interfaces
do programa;
Objetos podem ser compostos em
grandes estruturas utilizando
composição ou inclusão de objetos
dentro de outros.
Padrões Estruturais
PADRÃO
DESCRIÇÃO
Adapter
Fornece um objeto de uma nova
interface que se adapta à interface de
outro objeto.
Bridge
Permite que se criem novos
componentes para diferentes
plataformas com uma “ponte”. A
“ponte” esconde detalhes específicos
de cada plataforma.
Composite
Permite que um objeto cliente que está
percorrendo uma estrutura hierárquica
não precise determinar o tipo de cada
componente dessa estrutura.
Padrões Estruturais (cont.)
PADRÃO
Decorator
Facade
Flyweight
Proxy
DESCRIÇÃO
Permite que um objeto assuma
responsabilidades adicionais
dinamicamente.
Permite que um “objeto fachada”
forneça uma interface para os
comportamentos de um
subsistema.
Permite reduzir o número de
instâncias de um mesmo dado em
uma classe.
Permite que um objeto (Objeto
Proxy) aja como um substituto para
outro.
Padrões Comportamentais
 Oferecem estratégias
comprovadas para modelar como
os objetos colaboram uns com os
outros em um sistema;
 Sugerem comportamentos
especiais apropriados para uma
grande variedade de aplicações.
Padrões Comportamentais
PADRÃO
DESCRIÇÃO
Chain-of-Resp Permite determinar o objeto que irá
onsibility
tratar uma mensagem em situações em
que os objetos “conversam”.
Command
Permite especificar a funcionalidade
desejada uma só vez, em um objeto
reutilizável.
Interpreter
Descreve como definir uma gramática e
como utilizá-la para interpretar as
entradas.
Iterator
Permite que objetos acessem dados
individuais de qualquer estrutura de
dados, sem conhecer o comportamento
da estrutura de dados.
Padrões Comportamentais
PADRÃO
DESCRIÇÃO
Mediator
Promove o baixo acoplamento entre
duas classes fazendo com que as
trocas de mensagens entre elas sejam
realizadas por um objeto mediador.
Memento
Permite que um sistema salve o estado
de um objeto, podendo ser restaurado
posteriormente.
Observer
Permite que um mesmo objeto possua
diversas representações.
State
Perminte descrever comportamentos
para estados que um objeto possui.
Padrões Comportamentais
PADRÃO
DESCRIÇÃO
Strategy
Permite armazenar um objeto
estratégia que encapsula um algoritmo
responsável pelo comportamento da
classe.
Template
Method
Exige que todos os objetos
compartilhem um único algoritmo
definido por uma superclasse.
Visitor
Permite que sejam adicionadas novas
funcionalidades a classes existentes,
de maneira plugável, sem que haja a
necessidade de se alterar a hierarquia
das classes.
Relacionamentos
Relacionamentos (Cont.)
Outros Padrões
 Padrões Arquiteturais;
 Padrões para Programação
Paralela e Distribuída;
 Padrões J2EE;
Exemplos de Aplicação
 JFC (Java Foundation Classes):
–
–
Swing: API Gráfica do Java;
É considerada uma “obra de arte” da
linguagem orientada a objetos.
 SEAD:
–
Software Estatístico de Análise de
Desempenho Acadêmico.
Conclusões
 Os padrões de projeto são
maneiras convenientes de reusar
código orientado a objetos entre
projetos e programadores.
 A idéia é simples: catalogar
interações comuns entre objetos
que são utilizados freqüentemente
pelos programadores.
Conclusões
 Termos relacionados:
–
–
–
Programação Extrema (eXtreme
Programming);
Refatoração;
Programação Orientada a Objetos.
 Não confundir com:
–
–
Padrões de análise;
Frameworks;
Referências
 Deitel, H. M. e Deitel, P. J. Java, Como
Programar. Editora Bookman, 2003, 4ª edição,
Porto Alegre, RS.
 Horstmann, Cay S. Cornell, Gary. Core Java 2 –
Volume I (Fundamentos). Editora Makron
Books, 2001, São Paulo, SP.
 Cooper, James W. The Design Patterns: Java
Companion. IBM Thomas J. Watson Research
Center. Addison Wesley Design Patterns Series.
 Gamma, Helm, Johnson e Vlisside. Design
Patterns: Elements of Reusable Software.
Addison Wesley: 1995.
Download