Escolar Documentos
Profissional Documentos
Cultura Documentos
Padrões de Projeto
Introdução
Profa. Alessandra Alaniz Macedo
Slides adaptados da Introdução do livro
de Padrões de Projeto do Gamma et al
1. Introdução aos Padrões de
Projeto
2. Descrevendo os Padrões de
Projeto
Tópicos 3. Catálogo de Padrões de
Projeto
4. Como os padrões solucionam
problemas de projeto?
5. Como selecionar um padrão de
projeto?
6. Como usar um padrão de
projeto?
1. Introdução aos Padrões de
Projeto
UML e Padrões de Projeto
● UML indica como expressar um projeto OO
● Padrões de Projeto expressam o resultado do
processo em um exemplo de projeto
● Pessoas sugerem que
○ projetos tem problema, pois as pessoas não estão cientes
do projeto
○ apenas experientes estão
UML e Padrões de Projeto
Padrões
● descrevem a maneira de fazer as coisas
● são coletados e descritos por pessoas que são
experientes em algum tema de projeto
○ assim, outras pessoas podem ler o padrão e ver como
aplicá-lo
Motivação
● Projetar software OO é difícil
○ Projetar software OO reutilizável é mais difícil ainda, pois
deve-se:
■ Identificar objetos pertinentes
■ Fatorá-los em classes no nível correto de granularidade
■ Definir as interfaces das classes
■ Definir hierarquias de herança
■ Estabelecer as associações-chave
Motivação
● Além disso, seu projeto deve
○ ser específico para o problema a resolver
○ ser genérico para atender problemas e requisitos futuros
○ evitar/minimizar reprojeto
● Assim quase impossível um ótimo (reutilizável e flexível)
projeto da 1a vez
● Experiência auxilia no desenvolvimento de bons projetos
O que um projetista deve saber?
■ A novela romântica
● Projetista de softwares OO
○ Eles devem
■ Seguir padrões como "representam estados como objetos”, “adorne objetos de
maneira que possa facilmente acrescentar/remover características”, etc etc
Christopher Alexander
Exemplo - Problema
● Você tem um problema
○ alguns objetos estão executando em um processo no seu
desktop e eles precisam se comunicar com outros objetos
em execução em outro processo
○ Este processo pode estar em seu desktop ou em outro
lugar
Exemplo - Problema
● Você não quer os objetos em seu sistema para não
ter que se preocupar em encontrar outros objetos
na rede ou executar chamadas de procedimento
remoto
● O que você pode fazer?
Exemplo - Solução
● Criar um objeto proxy dentro de seu processo local
para o objeto remoto
● O proxy:
○ tem a mesma interface que o objeto remoto. Seus objetos
locais comunicam-se com o proxy, usando as habituais
mensagens
○ passa a ser responsável por passar qualquer mensagem
para o objeto real, onde quer que resida
Exemplo - Solução
● Os proxies são uma técnica comum usada em redes
e em outros lugares
● As pessoas têm muita experiência em usar proxies
○ Elas sabem como eles podem ser utilizados, quais as
vantagens que eles podem trazer, suas limitações e como
implementar
UML e Padrões de Projeto
● No exemplo do proxy é mais desafiador saber como
diagramar do que aplicar uma solução bem
estabelecida
● O exemplo do proxy, embora útil, não é tão útil
como discutir a experiência envolvendo proxies
UML e Padrões de Projeto
● No início de 1990, algumas pessoas começaram a
capturar essa experiência
● Eles formaram uma comunidade interessada na
escrita de padrões
● Essas pessoas patrocinam conferências e produziram
vários livros
Padrões de Projeto
● Padrões de projeto são descrições de objetos e classes
comunicantes que precisam ser personalizadas para
resolver um problema geral de projeto num contexto
particular
● Um padrão de projeto sistematicamente nomeia, explica
e avalia um aspecto de projeto importante e recorrente
em sistemas orientado a objetos
○ Assim eles tornam mais fácil reutilizar projetos e arquiteturas
bem-sucedidas
Vantagens dos padrões de projeto
Flyweight Memento
Proxy Observer
State
Strategy
Template Method
Visitor
PP por Finalidade
PPs por Finalidade
● Estruturais
○ PPs que geralmente lidam com relacionamentos entre
entidades, tornando mais fácil para essas entidades
trabalharem juntas
● De criação
○ PPs que fornecem mecanismos de instanciação, tornando
mais fácil criar objetos de uma maneira que encaixa na
situação
PPs por Finalidade
● Comportamentais
○ PPs que são usados na comunicação entre entidades
tornando mais fácil e mais flexível para essas entidades se
comunicarem
6. Como usar um padrão de
projeto?
Como usar um PP ?
1) Leia o PP por inteiro, para obter sua visão geral,
especialmente as seções Aplicabilidade e Consequências
2) Volte e estude as seções Estrutura, Participantes e
Colaborações
3) Olhe a seção Exemplo de Código para ver um exemplo
concreto do padrão codificado
4) Escolha nomes para os participantes do padrão que
tenham sentido no contexto da aplicação
Como usar um PP ?
5) Defina as classes, declare suas interfaces, estabeleça
os relacionamentos de herança e defina as variáveis de
instância para dados e referências a objetos
6) Defina nomes específicos da aplicação para as
operações no padrão
7) Implemente as operações para suportar as
responsabilidades presentes no padrão
Quando não usar PP ?
● Quando não precisar da flexibilidade oferecida
○ devido à introdução de níveis adicionais de endereçamento
indireto. Isso pode
■ Complicar um projeto
■ Custar algo em termos de desempenho
Otávio Miranda
○ (45 vídeos)
○ https://youtube.com/playlist?list=PLbIBj8vQhvm0VY5YrM
rafWaQY2EnJ3j8H
Análise e Projeto de Software
Padrões de Projeto
Introdução