CEA032 – PROGRAMAÇÃO DE
COMPUTADORES II
Prof. Filipe Nunes Ribeiro
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
PADRÕES DE PROJETO
Agenda
Introdução
Reuso
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
INTRODUÇÃO
Projetar software orientado a objetos é...
Difícil!
Como estabelecer as classes adequadas?
Definição adequada de interfaces
Hierarquia de herança adequada.
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
INTRODUÇÃO
Deve ser genérico?
Desenho deve ser genérico o suficiente para reuso
E adaptabilidade visando mudança de requisitos
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
REUSO
Arquitetos experientes dizem que...
Projeto reusável, flexível é difícil de se obter
Modificações constantes visando melhorias → refactoring.
É fato que...
Arquitetos experientes realizam projetos de qualidade.
Enquanto inexperientes não...
Ficam sobrecarregados sobre a quantidade de opções...
E tendem a utilizar técnicas não O.O.
Ou que não tiram proveito da O.O.
A curva de aprendizado é longa...
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
REUSO
Mas se arquitetos experientes...
Fazem um bom projetos, então eles sabem algo a mais
Será que tem como tirarmos vantagem da experiência deles?
Não reinventar a roda
Reuso de soluções que deram certo!
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
REUSO
Tais soluções começam a ser utilizadas repetidamente até...
Se tornarem padrões que são aplicáveis a problemas
específicos
Padrões representarão a forma de classes e comunicação entre
elas.
Utilização destes padrões tornam o software produzido
Compreensível
Flexível
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
PADRÕES DE PROJETO
Ideia que foi ”emprestada” da arquitetura
Christopher Alexander
Alexander descreve problemas como o surgimento de "forças
conflitantes" que se manifestam em situações particulares
Ex:
Problema: quarto precisa ser ensolarado mas não superaquecido no verão
Solução: e a justificativa para tal solução.
Um padrão deve ser geral o suficiente para poder ser aplicado a uma
gama de situações em um particular contexto e específico suficiente
para orientar o projetista nas suas decisões.
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
PADRÕES DE PROJETO
Mas o que é um padrão de projeto
Composto por 4 elementos essenciais
Nome
Identifica e fornece um vocabulário para discussão sobre o
projeto.
Permite projetar o software em um nível mais alto de abstração
.
Problema
Quando devemos usar um determinado padrão?
Especifica uma estrutura de classes inflexível
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
PADRÕES DE PROJETO
Mas o que é um padrão de projeto
Composto por 4 elementos essenciais
Solução
Descreve os elementos que compõe o padrão.
Relacionamentos, responsabilidades e colaborações.
Padrões não descrevem soluções absolutas
Padrões são abstratos, estrutura mínima de projeto O.O
.
Consequências
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
PADRÕES DE PROJETO
Mas como usar um padrão de projeto?
Leia o texto descritivo do padrão por completo
Examine as seções de estrutura e interação.
Observe o código de exemplo com cuidado.
Entenda como os padrões se relacionam
Alguns padrões podem ser combinados de maneira simples
Estude padrões de finalidade semelhante
Estes possuem mais chance de compor uma solução maior
Escolha nomes apropriados
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
PADRÕES DE PROJETO
“Cada padrão descreve um problema que ocorre repetidamente,
e então descreve o núcleo da solução para aquele problema, de
forma que pode-se utilizar a mesma solução com menor
esforço.”
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
PADRÕES DE PROJETO
"Padrões para arquitetura de software são soluções de
eficiência já comprovadas e amplamente utilizadas para a
resolução de problemas comuns em projeto de software. Estas
soluções são desenvolvidas e conhecidas por especialistas e
tornam-se padrões por serem reutilizadas várias vezes em vários
projetos e por terem eficácia comprovada."
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
EXEMPLO DE MODELAGEM OO
Veremos um problema que acontece durante a modelagem O.O
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
COMPORTAMENTO
Antônio trabalha em uma empresa que desenvolve o aplicativo
(PatoQuack)
Jogo de simulação com patos
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
COMPORTAMENTO
Como bons desenvolvedores O.O
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
COMPORTAMENTO
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
COMPORTAMENTO
Os executivos pediram para a aplicação ser melhorada
O pato precisa voar agora.
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
COMPOSTAMENTO
Reunião da diretoria da empresa com parceiros para
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
COMPORTAMENTO
Isso irá acontecer para vários patos
Métodos herdados sem implementação
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
COMPORTAMENTO
Isso irá acontecer para vários patos
Métodos herdados sem implementação
Isso pode ocorrer para muitos casos
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
COMPORTAMENTO
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
COMPORTAMENTO
Existem patos que voam da mesma forma e grasnam da mesma
forma
Caso uma mudança fosse feita no método voar, todas as
subclasses que voam da mesma forma deveriam ser alteradas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
COMPORTAMENTO
Princípio de projeto:
“Identifique os aspectos de sua aplicação que variam e separá-las
das não variam.“
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
COMPORTAMENTO
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
PADRÕES DE PROJETO
Singleton
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
SINGLETON
Este padrão visa assegurar que uma classe tem apenas uma
instância, e deve ser oferecido um ponto de acesso global para
ela.
Ex:
Acesso a banco de dados
Variáveis globais que precisam ser compartilhadas e terem uma
única instância
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
ABSTRACT FACTORY
Este padrão permite a criação de famílias de objetos
relacionados ou dependentes, através de uma única interface sem
que a classe concreta seja especificada.
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
ABSTRACT FACTORY
Este padrão fornece uma interface para criar uma família de
produtos.
Ao escrever o código que usa essa interface, desvinculamos
nosso código da fábrica real que cria os produtos
Isso nos permite implementar uma variedade de fábricas que
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
ABSTRACT FACTORY
Ex:
Banco de dados (DAO)
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
ABSTRACTFACTORY E SINGLETON
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas
Exercício
Adapte o projeto GuiCadastraAlunos disponibilizado no site de
forma que ele se encaixe no padrão de projeto Singleton
Universidade Federal de Ouro Preto Campus João Monlevade
Instituto de Ciências Exatas e Aplicadas