Escolar Documentos
Profissional Documentos
Cultura Documentos
Software
Professor: Fernando Corrêa
e-mail:
fernandocmjunior@terra.com.br
Padrões
O que é um padrão?
Maneira testada ou documentada de alcançar um objetivo
qualquer
Cada padrão descreve um problema que ocorre repetidas
vezes em nosso ambiente, e então descreve o núcleo da
solução para aquele problema, de tal maneira que pode-se
usar essa solução milhões de vezes sem nunca fazê-la da
mesma forma duas vezes
Os padrões de projeto são descrições de objetos que se
comunicam e classes que são customizadas para resolver
um problema genérico de design em um contexto
específico"
2
Por que aprender padrões?
Aprender com a experiência dos outros
Aprender a programar bem com orientação a
objetos
Desenvolver software de melhor qualidade
Vocabulário comum
Ajuda na documentação e na aprendizagem
Uma prática adjunta aos métodos existentes
Um alvo para refatoramento
3
Elementos de um padrão
Nome
É uma referência que podemos usar para descrever um
problema. Ajuda a na implementação e comunicação.
Problema
Descreve como aplicar o padrão e quando.
Solução
Descreve os elementos que compõem o projeto, seus
relacionamentos, suas responsabilidades e colaborações.
Conseqüências
São os resultados e análises das vantagens e
desvantagens da aplicação do padrão.
4
Trabalho
Identificar os Elementos dos Padrões
(nome,problema, solução).
Exemplificar e justificar com o trabalho do
laboratório a utilização ou não do padrão.
Apresentação do trabalho.
Trabalho Escrito.
Contextualizar o projeto de laboratório.
Objetivo.
Resumo.
Diagrama de Domínio.
Diagrama de Caso de Uso (contexto).
5
Padrões
Abstract Factory: Fornece uma interface para criação de famílias de
objetos relacionados ou dependentes sem especificar suas classes
concretas.
A fábrica permite a troca de toda uma coleção de classes sem grandes
modificações no programa fonte. Quem conhece as classes concretas é
somente a fábrica.
O padrão Abstract Factory foi utilizado para que o sistema tivesse
portabilidade em relação ao SGDB utilizado.
6
Padrões
Bridge: Separa uma abstração da sua implementação, de modo
que as duas possam variar independentemente.
Separar a interface da sua implementação. Ex: Pessoa, inclusão
de novas pessoas.
7
Padrões
Chain of responsability: Desacoplar remetentes e
receptores fornecendo a múltiplos objetos a
oportunidade de tratar uma solicitação. A solicitação
é passada ao longo de uma cadeia de objetos até
que um deles a trate. Ex: Help.
O objeto a ser tratado e selecionado automaticamente.
Command: Encapsular uma solicitação como um
objeto. Pode parametrizar clientes com vários tipos
de solicitação.
O padrão Command foi utilizado na
implementação das telas para desacoplá-las dos
objetos que realmente executam as operações
solicitadas a elas Ex: Função / botão.
8
Padrões
Composite: Compões Objetos em estrutura de
árvore para representar hierarquias do tipo partes-
todo. Ex: Hierarquia do módulo de segurança.
Decorator: Atribui responsabilidades adicionais a
um objeto dinamicamente.
Façade: Fornece uma interface unificada para um
conjunto de interfaces em um subsistema. O façade
define uma interface de nível mais alto que torna o
subsistema mais fácil de usar. Ex: Fornecer uma
interface simples para um sistema complexo.
Oferecer uma interface única de nível mais elevado para
um conjunto de interfaces de um subsistema.
9
Padrões
Factory Method: Define uma interface para criar um objeto, mas deixa as
subclasses decidirem qual classe a ser instânciada.
Uma classe não pode antecipar a classe de objetos que deve criar. Sabe que uma
classe tem que ser criada, mas não sabe o tipo. Ex: Documento.
Iterator: Fornece uma maneira de acessar sequencialmente os elementos de
um objeto agregado sem expor sua representação subjacente. Ex: Lista
acessar seus elementos sem expor a sua extrutura interna. Percorrer a lista. Ex:
Lista de Pedidos de Compra.
Mediator: Define um objeto que encapsula como um conjunto de objetos
interage. O mediator promove o acoplamento fraco ao evitar que os objetos se
refiram explicitamente uns aos outros, permitindo que você varie suas
interações independentemente.
Um objeto pode ter que ter o conhecimento de vários outros. Esta comunicação pode
ser complexa e de difícil reutilização.
Memento: Sem violar o encapsulamento, captura e externaliza um estado
interno de um objeto, de modo que o mesmo possa ser posteriormente
recuperado. Um padrão para trabalhar com estado do objeto. Necessidade de
recuperar um determinado Estado.
10
Padrões
Observer: Define uma dependência um-para-muitos entre
objetos, de modo que, quando um objeto muda de estado, todos
os seus dependentes são automaticamente notificados e
atualizados. Usar quando uma mudança em um objeto exige
mudanças em outros.
Singleton: Garante que uma classe tenha somente uma
instância e fornecer um ponto global de acesso para ela. Deve
haver apenas uma instância de uma classe. Exemplo : uma
classe de conexão com o banco de dados.
State: Permite que um objeto altere seu comportamento quando
seu estado interno muda. O comportamento do objeto depende
do seu estado.
Strategy: Definir uma família de algoritmos, encapsular cada
uma delas e torná-las intercambiáveis. Permite que o algoritmo
varie independentemente dos clientes que utilizam.
11
Padrão
Todos – Apreentação Dia XX/11.
Adapter – interface para um objeto – formas de apresentar.
Singleton – Classe de Conexão com o Banco de Dados.
Façade – interface simples para um sistema mais
complexo.
Vendas
Abstratct Factory - Ex: portabilidade entre bancos
Financeiro
Factory Method – Ex : Tipo de Documento.
Gerencial
Composite – ex : hierarquia de segurança.
12
Padrão
Comportamentais – Apresentação 24/10.
Grupo de Vendas – Financeiro Lab 1.
Chain of responsability – Ex : help.
Observer – controle de atualização de um-para-muitos
Command – ex : função / botão – Salvar.
Iterator – Ex : Lista de pedidos de comprar, como acessar.
Financeiro Lab 2 – Grupo Gerencial 24/10.
Mediator – um objeto conhecer vários outros. Como
implementar para facilitar o reuso.
Memento – Trabalhar com o estado do objeto.
State – Mudança de comportamento.
Strategy – algoritmos.
13
Vendas Lab1.
Builder.
Interpreter
Vendas Lab2.
Prototype.
Interpreter
Financeiro Lab1.
Bridge.
Template Method.
Financeiro Lab2.
Decorator.
Template Method.
Gerencial Lab1.
Flyweight.
Visitor
Gerencial Lab2.
Proxy.
Visitor.
14
O padrão abstract factory
Provê uma interface para criação de famílias de objetos relacionados ou
dependentes sem que se especifiquem suas classes concretas.
Deve ser utilizado principalmente quando se deseja transparência para o
sistema em relação à criação de produtos, quando existirem famílias de
produtos e o sistema deve ser configurado com somente uma delas e quando
houver a necessidade de que sejam utilizados em um sistema somente objetos
de uma mesma família.
AbstractFactory: classe abstrata que provê uma interface comum de
operações a serem especializadas pelas classes concretas
ConcreteFactory1 e ConcreteFactory2.
ConcreteFactory: classes concretas derivadas de AbstractFactory que
provêem a implementação dos métodos desta última, instanciando os
respectivos produtos especializados das classes AbstractProduct.
AbstractProduct: declara uma interface abstrata para os produtos a serem
criados pelas respectivas classes concretas.
ConcreteProduct: define os produtos a serem criados pelas respectivas
classes concretas e implementa a interface de AbstractProduct
Client: utiliza apenas as interfaces declaradas pro AbstractProduct e
AbstractFactory.
15
O Padrão abstract factory
16
O Padrão Factory Method
Permite a definição de uma interface (o factory
method) em uma classe mãe abstrata que, em suas
subclasses, especializa-se para criar vários tipos de
objetos. Deve-se utilizá-lo principalmente quando
existem vários tipos possíveis de objetos a serem
criados por uma classe, mas ela não é capaz de
definir as classes destes objetos. Assim ela delega
esta responsabilidade a subclasses, que vão
particularizar o factory method para criar seus
respectivos objetos.
17
O Padrão Factory Method
18
O padrão Singleton
Singleton
Garante que uma classe tenha somente uma instância.
define operação Instance que permite ao cliente acessar
uma instância única
Adapter
Converte a interface de uma classe em outra.
Target: define a interface a ser utilizada pelos clientes.
19
Singleton / Adapter
20
Composite
Compõe objetos em estruturas de árvore de forma a
representar estruturas todo-parte.
Facade
Provê uma interface unificada para para um conjunto de
interfaces do sistema.Ele define uma interface de nível
mais alto que torna o sistema mais fácil de ser utilizado
Sabe quais classes são responsáveis por uma solicitação
21
Composite
22