Buscar

Padrões de Projeto de Software Aula 03

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
FUNDAMENTOS DE PADRÕES DE PROJETO 
DE SOFTWARE 
 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Os padrões são soluções reutilizáveis para 
problemas reincidentes que ocorrem durante o 
desenvolvimento de software. 
• O que é um padrão?. 
 Um PADRÃO é uma descrição nomeada de um 
problema e uma solução que pode ser aplicado 
em novos contextos. 
• Muitos padrões fornecem orientação sobre a 
atribuição de responsabilidades a objetos, dada uma 
categoria específica de problemas. 
• A UML define responsabilidade como um contrato. As 
responsabilidades estão relacionadas com as 
obrigações de um objeto em termos de 
comportamento. 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
“Cada padrão descreve um problema que ocorre 
frequentemente em seu ambiente, e então descreve o 
núcleo de uma solução para o problema, de maneira 
que você possa usar esta solução um milhão de 
vezes, sem fazê-la do mesmo jeito duas vezes.” 
Christopher Alexander (Arquiteto e Urbanista), 1977 
 
“Um padrão é a abstração de uma forma concreta 
que ocorre muitas vezes em contextos não 
arbitrários específicos.” Riehle and Zullighoven, 1996 
“Resolve um problema. É um conceito provado. A 
solução não é óbvia. Descreve um relacionamento. 
Os padrões têm um componente humano 
significativo.” Coplien 1996. 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• As responsabilidades podem ser de dois tipos: 
 
• Conhecer: 
 Ter conhecimento sobre dados privados 
encapsulados. 
 Conhecer objetos relacionados. 
 Conhecer coisas que ele poder derivar ou calcular. 
 
• Fazer: 
 Criar um objeto ou executar um cálculo. 
 Iniciar uma ação em outro objeto. 
 Controlar e coordenar atividades em outros objetos. 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Aprendizagem com a experiência dos outros 
 Identificação de problemas comuns de projeto de 
software 
 Utilização de soluções testadas e bem documentadas 
 Ajuda um novato a agir mais como um experiente 
• Produção de bons projetos orientados a objetos 
• Normalmente utilizam boas práticas de OO 
• Utilizam eficientemente polimorfismo, herança e 
composição 
• Vocabulário comum 
• Uso de soluções que têm nome facilita comunicação 
• Nível mais alto de abstração 
Benefícios: 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Ajuda na documentação 
 Uso de soluções que têm um nome facilita a 
documentação 
 Conhecimento de padrões de projeto torna mais fácil 
a compreensão de sistemas existentes 
• Ajuda na conversão de um modelo de análise em um 
modelo de implementação 
• Aumento da produtividade 
 
Benefícios: 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Como descrever (Elementos essenciais): 
 Nome: Procura descrever o problema, a solução e as 
consequências em uma ou duas palavras. 
 Problema: Quando aplicar o padrão e em que 
condições 
 Sumário: Descreve os passos até a solução geral 
 Solução: Descreve os elementos do padrão, seus 
relacionamentos, responsabilidades e colaborações. 
 Consequências: Apresenta os resultados e a análise 
das vantagens e desvantagens da aplicação do 
padrão. Custos e benefícios de se aplicar o padrão. 
 Padrões Relacionados. Informar uma listagem de 
padrões relacionados. 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Principais padrões de Projeto: 
 Padrões de criação (Creational Patterns) 
 Padrões de Estrura (Structural Patterns) 
 Padrões de Comportamento (Behavioral Patterns) 
 Padrões de Divisão 
 Padrões de Concorrência 
 Padrões GRASP 
 Padrões para design de Interfaces (GUI) 
 Padrões para organização de códigos 
 Padrões para otimização 
 Padrões de Robustez de código 
 Padrões de testes 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Os Padrões de Projeto foram introduzidos 
para a comunidade OO através de Gamma 
E., et al, Design Patterns, Addison-Wesley, 
1994. 
• Catálogo de 23 padrões 
• Não apresenta padrão para um domínio de 
aplicação específico 
• Padrões do GoF representam o estado-da-
prática em boas construções de projeto 
orientado a objetos 
• É comum encontrar no detalhamento de 
padrões específicos de domínio a 
ocorrência de algum dos padrões do GoF 
Padrões GoF (Gang of Four) 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Os padrões são classificados em três tipos): 
 Criacionais (5) 
 Estruturais (7) 
 Comportamentais (11) 
 
• Divididos em 2 escopos: 
 Classe: 
 Relacionamentos entre classes e suas 
subclasses 
 Não é preciso executar nenhum código 
para determinar ouso dos padrões 
 Estáticos: fixos em tempo de compilação 
Classificação dos Padrões GoF 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
 Objeto: 
 Confia em ponteiros de objetos 
 Dinâmicos: relacionamentos entre objetos 
podem ser alterados em tempo de execução. 
Classificação dos Padrões GoF - Escopo 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
1. Abstract Factory 
2. Builder 
3. Factory Method 
4. Prototype 
5. Singleton 
6. Adapter 
7. Bridge 
8. Composite 
9. Decorator 
10.Facade 
11.Flyweight 
12.Proxy 
13.Chain of Responsibility 
14.Command 
15. Interpreter 
16. Iterator 
17.Mediator 
18.Memento 
19.Observer 
20.State 
21.Strategy 
22.Template Method 
23.Visitor 
Padrões de Criação 
Padrões Estruturais 
Padrões de Comportamento 
Catálogo dos 23 padrões GoF 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Criacionais: 
 Associados ao processo de criação de objetos 
 Tornam um sistema independente de como seus 
objetos são criados, compostos e representados 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Estruturais: 
 Tratam de compor classes e 
objetos para formar estruturas 
grandes e complexas 
 Associados à maneira como 
classes e objetos são 
organizados estruturalmente 
 Oferecem formas efetivas 
para usar conceitos OO como 
herança, agregação e 
composição 
 Focam na abstração da 
estrutura 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Comportamentais: 
 Tratam de algoritmos e como 
atribuir responsabilidades 
entre objetos 
 Associados à maneira que 
objetos e classes distribuem 
suas responsabilidades para 
realizar uma tarefa 
 Focam na abstração do 
comportamento 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• POSA – Pattern-Oriented 
Software Architecture: A System 
of Patterns 
• Categoriza os padrões em 3 
categorias: 
 Padrões Arquiteturais 
 Padrões de Projeto 
 Idiomas 
Padrões de Projetos do POSA 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Expressam um esquema de organização estrutural 
para sistemas de software 
• Oferecem um conjunto de subsistemas pré-definidos, 
especifica suas respectivas responsabilidades e 
inclui regras e diretrizes para organizaras relações 
entre eles 
• Exemplos 
 MVC 
 Broker 
 Layer 
 Reflection 
Padrões Arquiteturais 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Oferece um esquema para refinar os subsistemas ou 
componentes de um sistema de software ou as 
relações entre eles. 
• São considerados padrões de média escala 
• Exemplos 
 Singleton 
 Observer 
 Adapter 
 Command 
 Strategy 
Padrões de Projeto 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Padrão de baixo nível específico de uma 
linguagem de programação 
• Mostra como se pode implementar um 
dado componente/classe ou interação 
entre componentes/classes usando os 
recursos de uma LP 
• Exemplos 
• Singleton em C++ ou em Java 
• Counted Pointer: gerência de 
memória em C++ 
Idiomas 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• MVC: Um dos padrões mais conhecidos para interação 
com o usuário 
• Divide a aplicação em três partes fundamentais: 
 Model – Representa os dados da aplicação e as regras 
de negócio 
 View – Representa a interpretação visual do modelo 
pelo usuário 
 Controller - Responsável por mediar a interação 
usuário-aplicação 
• O padrão foi originalmente criado em 1978 
 Desde então diversas variações foram criadas para 
acompanhar novas demandas na iteração com o 
usuário (UI) 
Padrão MVC(Model-View-Controller) 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
• Responsabilidades: 
 Controller: Recebe dados de Usuário (ex.: teclado) e 
possui lógica de apresentação 
 View: mostra projeções (saída) sobre os dados do 
modelo 
 Model: representação dos dados e regras de negócios 
Padrão MVC Original 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
Descrição: 
1. O usuário faz requisições por 
dados ou ações sobre os dados do 
modelo ao Controller. 
2. O Controller recebe as requisições 
e repassa para o objeto apropriado 
do Model para atendê-la. 
3. O Model faz as operações sobre 
os dados e retorna algum tipo de 
informação ao Controller, que por 
sua vez devolve informações para 
objetos na camada de 
apresentação. 
4. Atualizações no Model são 
avisadas ao View. 
Interação (em camadas) no MVC 
Presentation 
Model 
Controller 
View 
Business 
Model 
input 
output 
notificação 
notificação 
C
. A
p
resen
tação
 
C
. N
egó
cio
 
1 
2 
3 
4 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
1. Construir um projeto em Java no IDE (Netbeans, Eclipse) usando 
Java Sever Face e PrimeFaces. Crie uma classe Aluno no MySQL. 
O projeto deve permitir visualizar o funcionamento do padrão MVC 
usando uma CRUD da classe Aluno. 
2. Em uma aplicação web desenvolvida com Java em três camadas 
utilizando o padrão MVC, as classes Servlet é representada em qual 
componente ? 
(A) Controller. (B) View e model. (C) Controller e model. 
(D) model. (E) View 
3. Em uma aplicação web desenvolvida com Java em três camadas 
utilizando o padrão MVC, as classes no padrão DAO é representada 
em qual componente ? 
(A) Controller (B) View e model (C) Controller e model 
(D) Model (E) View 
 
Padrão MVC - Exercícios 
AULA 3 
PADRÕES DE PROJETO DE SOFTWARE 
JORGE ZAVALETA - zavaleta.jorge@gmail.com 
4. Paulo está desenvolvendo uma aplicação web com Java que utiliza 
o padrão MVC. Nessa aplicação, criou as páginas HTML, arquivos 
CSS e validadores JavaScript do componente View e, em seguida 
passou à criação do componente Controller. Nesse componente do 
MVC, o tipo de classe apropriada que Paulo deve criar é 
4. (A) BOAbstract .- Business Object (B) Servlet. (C) JSP. 
5. (D) DAO - Data Access Object. (E) VO – Value Object. 
5. Em uma aplicação web desenvolvida com Java em três camadas 
utilizando o padrão MVC, as servlets e as classes no padrão DAO 
são representadas, respectivamente, nos componentes? 
(A) Controller e View 
(B) View e model 
(C) Controller e model 
(D) Model e Controller 
(E) View e Controller 
Padrão MVC - Exercícios

Outros materiais