Buscar

16 - Padrões de Projetos

Prévia do material em texto

Padrões de Projeto
Prof. Jefersson Alex dos Santos (jefersson@dcc.ufmg.br)
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 DESCRIÇÃO
Decorator Permite que um objeto assuma 
responsabilidades adicionais 
dinamicamente.
Facade Permite que um “objeto fachada” 
forneça uma interface para os 
comportamentos de um 
subsistema.
Flyweight Permite reduzir o número de 
instâncias de um mesmo dado em 
uma classe.
Proxy 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
onsibility
Permite determinar o objeto que irá 
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. 
	Slide 1
	Apresentação
	Conceitos
	Conceitos
	Conceitos
	Padrões de Análise
	Padrões de Análise
	Padrões de Projeto
	Padrões: Análise X Projeto
	Framework X Padrões
	Ponto de Vista Prático
	Ponto de Vista Prático
	Ponto de Vista Prático
	Ponto de Vista Prático
	Design Patterns: FAQs
	Design Patterns: Vantagens
	Design Patterns: História
	Design Patterns: História
	Design Patterns: História
	Os Padrões GoF
	Padrões de Criação
	Padrões de Criação
	Padrões Estruturais
	Padrões Estruturais
	Padrões Estruturais (cont.)
	Padrões Comportamentais
	Padrões Comportamentais
	Padrões Comportamentais
	Padrões Comportamentais
	Relacionamentos
	Relacionamentos (Cont.)
	Outros Padrões
	Exemplos de Aplicação
	Conclusões
	Conclusões
	Referências

Continue navegando