Escolar Documentos
Profissional Documentos
Cultura Documentos
Bibliografia Bsica
Bibliografia Complementar
Ementa
Conceitos bsicos e prticos sobre os
seguintes padres mais relevantes:
Arquiteturais; Padres de projeto de
criao; Padres de projeto estruturais;
Padres de projeto comportamentais.
Objetivos
Aprender os conceitos bsicos dos padres
arquiteturais e dos padres relacionados ao
desenvolvimento de software orientado a
objetos.
Projeto de Arquitetura
No processo de desenvolvimento de
software, o projeto de arquitetura o
primeiro estgio do projeto de software.
Projeto de Arquitetura
Projeto de Arquitetura
O desenvolvimento incremental de
arquiteturas geralmente no bem-sucedido.
Projeto de Arquitetura
A decomposio de arquitetura
normalmente necessria para estruturar
e organizar a especificao.
Projeto de Arquitetura
Projeto de Arquitetura
Projeto de Arquitetura
Projeto de Arquitetura
Os componentes individuais
implementam os requisitos funcionais do
sistema.
Projeto de Arquitetura
Vantagens
1.
Projeto de Arquitetura
Vantagens
2.
.
Anlise de sistema:
Tornar explcita a arquitetura do sistema,
em um estgio inicial, exige que o
sistema seja analisado principalmente em
termos de requisitos no funcionais.
As decises de projeto de arquitetura tm
um efeito profundo sobre a possibilidade
do sistema atender ou no aos requisitos
crticos, como desempenho,
confiabilidade e manutenibilidade.
Projeto de Arquitetura
Vantagens
3.
Decises de Projeto de
Arquitetura
Decises de Projeto de
Arquitetura
1.
Decises de Projeto de
Arquitetura
2.
3.
4.
5.
6.
Decises de Projeto de
Arquitetura
7.
8.
9.
Decises de Projeto de
Arquitetura
Decises de Projeto de
Arquitetura
Decises de Projeto de
Arquitetura
padres existentes;
que situaes podem ser usados;
Quais
Decises de Projeto de
Arquitetura
Decises de Projeto de
Arquitetura
1.
Desempenho:
A arquitetura deve ser projetada para
inserir as operaes mais importantes
dentro de um pequeno nmero de
componentes, instalados no mesmo
servidor, ao invs de distribudos pela
rede.
Decises de Projeto de
Arquitetura
Decises de Projeto de
Arquitetura
2.
Proteo:
Decises de Projeto de
Arquitetura
3.
Segurana:
Decises de Projeto de
Arquitetura
4.
Disponibilidade:
Decises de Projeto de
Arquitetura
5.
Manuteno:
Decises de Projeto de
Arquitetura
Padres de Arquitetura
Padro MVC
Model-View-Controller
Padro MVC
Model-View-Controller
Padro MVC
Model-View-Controller
Padro MVC
Model-View-Controller
Padro MVC
Model-View-Controller
Padro MVC
Model-View-Controller
Padro MVC
Model-View-Controller
Padro MVC
Model-View-Controller
Padro de Arquitetura em
Camadas
Padro de Arquitetura em
Camadas
Padro de Arquitetura em
Camadas
Padro de Arquitetura em
Camadas
Padro de Arquitetura em
Camadas
Vantagens:
Padro de Arquitetura em
Camadas
Desvantagens:
Pode ser difcil proporcionar uma
separao entre as camadas;
Uma camada de alto nvel pode ter de
interagir diretamente com camadas de
baixo nvel, ao invs da camada abaixo
dela.
O desempenho pode ser afetado devido
aos mltiplos nveis de interpretao de
uma solicitao de servio, uma vez que
so processados em cada camada.
Padro de Arquitetura em
Camadas
Padro de Arquitetura de
Repositrio
Padro de Repositrio
1.
Padro de Repositrio
2.
Padro de Repositrio
Padro de Repositrio
Vantagens e Desvantagens
No h necessidade de transmitir os
dados de um componente para outro.
Padro de Repositrio
Vantagens e Desvantagens
Padro de Repositrio
Vantagens e Desvantagens
Padro de Repositrio
Vantagens e Desvantagens
Padro de Repositrio
Vantagens e Desvantagens
Padro de Repositrio
Vantagens e Desvantagens
Arquitetura
Cliente-Servidor
1.
Arquitetura
Cliente-Servidor
2.
3.
Arquitetura
Cliente-Servidor
Arquitetura
Cliente-Servidor
Arquitetura
Cliente-Servidor
Arquitetura
Cliente-Servidor
Arquitetura
Cliente-Servidor
Sistemas Distribudos
Middleware
Middleware
Middleware
Middleware
Middleware
1.
.
.
Middleware
2.
Tipos de Middleware
Middlewares Transacionais
Vantagens:
Bastante confiveis;
Boa performance;
Tipos de Middleware
Middlewares Transacionais
Desvantagens:
Middlewares
Orientados a Mensagens
Comunicao indireta;
Assincrona;
Comunicao direta;
Sncrona;
Middlewares
Orientados a Mensagens
Vantagens:
Confiabilidade;
Desvantagens:
Middlewares
Orientados a Objetos
Middlewares
Orientados a Objetos
Vantagens:
Versatilidade.
Desvantagens:
Pouca Escalabilidade.
Middlewares
Exemplos
Transacionais :
Orientados a Mensagens:
Tuxedo (BEA);
CICS (IBM);
Encina (Transarc).
MQSeries (IBM);
JMS (Sun).
Orientados a Objetos:
CORBA (OMG);
COM (Microsoft).
Sistemas
Cliente-Servidor
Sistemas
Cliente-Servidor
Camadas:
Sistemas
Cliente-Servidor
Sistemas
Cliente-Servidor
Arquitetura
Mestre-Escravo
Arquitetura
Mestre-Escravo
Arquitetura
Mestre-Escravo
Arquitetura
Mestre-Escravo
Arquitetura Cliente-Servidor de
Duas Camadas
Arquitetura Cliente-Servidor de
Duas Camadas
de dados;
Processamento de aplicao;
Banco de dados.
Arquitetura Cliente-Servidor de
Duas Camadas
Arquitetura Cliente-Servidor de
Duas Camadas
Vantagem do cliente-magro:
Arquitetura Cliente-Servidor de
Duas Camadas
Arquitetura Cliente-Servidor de
Duas Camadas
Arquitetura Cliente-Servidor de
Duas Camadas
Arquitetura Cliente-Servidor de
Duas Camadas
A desvantagem requerer
gerenciamento de sistema adicional para
implantar e manter o software no
computador cliente.
Arquitetura Cliente-Servidor de
Duas Camadas
Arquitetura cliente-servidor
multicamadas
Ou problemas de gerenciamento do
sistema caso um modelo cliente-gordo for
Arquitetura cliente-servidor
multicamadas
Arquitetura de Componentes
Distribudos
Arquitetura de Componentes
Distribudos
Arquitetura de Componentes
Distribudos
Arquitetura de Componentes
Distribudos
Vantagens:
1.
Arquitetura de Componentes
Distribudos
2.
Arquitetura de Componentes
Distribudos
3.
4.
Arquitetura de Componentes
Distribudos
Desvantagens:
1.
2.
H middlewares diferentes e
incompatveis. Esses middlewares so
complexos e aumentam a complexidade
geral do sistema distribudo.
Arquitetura Ponto-a-ponto
(p2p peer-to-peer)
Arquitetura Ponto-a-ponto
Arquitetura Ponto-a-ponto
(p2p peer-to-peer)
Arquitetura Ponto-a-ponto
(p2p peer-to-peer)
Padres de Projeto
Padres de Projeto
1.
2.
.
.
Padres de Projeto
3.
Padres de Projeto
4.
Consequncias:
Padres de Criao
Factory
Inteno:
Interface
Factory
Factory
Participantes:
Factory
Factory
Estrutura
Factory
Colaboraes:
Factory
Consequncias:
1.
2.
Factory
Exemplo Prtico Simples
Fiat
Gol Volkswagen
Celta Chevrolet
Fiesta Ford
Factory
Factory
Exerccio
Good Morning;
Francs Bon Jour;
Alemo Guten Tag;
Italiano Buon Giorno;
Espanhol Buenos Dias.
Abstract Factory
Inteno:
Fornecer uma interface para criao de
famlias de objetos relacionados ou
dependentes sem especificar suas
classes concretas.
Aplicabilidade: Deve-se us-lo quando:
Um sistema deve ser independente de
como seus produtos so criados,
compostos ou representados;
Abstract Factory
Abstract Factory
Participantes
Abstract Factory
Estrutura
Abstract Factory
Colaboraes
Abstract Factory
Exemplo Prtico Simples
Fiat
Fiesta Sedan Ford
Popular:
Palio
Fiat
Fiesta Ford
Abstract Factory
Exemplo Prtico Simples
Abstract Factory
Exerccio
Mamfero;
Jacar Rptil;
Herbvoro:
Capivara
Mamfero;
Jabuti Rptil;
Abstract Factory
Consequncias
1.
Abstract Factory
Consequncias
2.
Abstract Factory
Consequncias
3.
Abstract Factory
Consequncias
4.
Singleton
Inteno:
Singleton
Aplicabilidade:
Usa-se o padro Singleton quando:
For preciso haver apenas uma instncia
de uma classe, e essa instncia tiver que
dar acesso aos clientes atravs de um
ponto bem conhecido.
A nica instncia tiver de ser extensvel
atravs de subclasses, possibilitando aos
clientes usar uma instncia estendida
sem alterar o seu cdigo.
Singleton
Participantes
Singleton
Estrutura
Singleton
Exemplo Prtico Simples
Singleton
Exerccio
Singleton
Consequncias
1.
2.
Singleton
Consequncias
3.
Builder
Inteno:
Builder
Aplicabilidade
Builder
Participantes
ConcreteBuilder:
Constri e monta partes do produto pela
implementao da interface de Builder;
Define e mantm a representao que cria;
Fornece uma interface para recuperao do
produto.
Builder
Participantes
Product:
Representa o objeto complexo em construo.
ConcreteBuilder constri a representao
interna do produto e define o processo pelo
qual ele montado;
Inclui classes que definem as partes
constituintes, inclusive as interfaces para a
montagem das partes no resultado final.
Builder
Builder
Colaboraes
Builder
Exemplo Prtico Simples
Builder
Consequncias
1.
Builder
Consequncias
2.
Builder
Consequncias
Builder
Consequncias
3.
Builder
Consequncias
Prototype
Inteno:
Prototype
Aplicabilidade
Prototype
Aplicabilidade
Prototype
Participantes
Prototype
Estrutura
Prototype
Exemplo Prtico Simples
Prototype
Prototype
Exerccio
Carnvoros;
Capivara Herbvoros;
Rpteis:
Jacar
Carnvoros;
Jabuti Herbvoros.
Prototype
Consequncias
1.
2.
Prototype
Consequncias
3.
Prototype
Consequncias
4.
Prototype
Consequncias
Prototype
Consequncias
5.
6.
.
Padres Estruturais
Adapter
Inteno:
Adapter
Aplicabilidade
Adapter
Participantes
Adapter
Estrutura (a nvel de classe)
Adapter
Estrutura (a nvel de objeto)
Adapter
Colaboraes:
Adapter
Exemplo Prtico Simples
Adapter
Exemplo Prtico Simples
Adapter
Exerccio
Adapter
Exerccio
Adapter
Consequncias
Um adaptador de classe:
Adapter
Consequncias
Um adaptador de objeto:
Permite a um nico Adapter trabalhar
com muitos Adaptees. O Adapter tambm
pode acrescentar funcionalidade a todos
os Adaptees de uma s vez;
Torna mais difcil redefinir um
comportamento de Adaptee. Ele exigir a
criao de subclasses de Adaptee e far
com que Adapter referencie a subclasse
ao invs do Adaptee em si.
Adapter
Consequncias
Um adaptador de objeto:
Permite a um nico Adapter trabalhar
com muitos Adaptees. O Adapter tambm
pode acrescentar funcionalidade a todos
os Adaptees de uma s vez;
Torna mais difcil redefinir um
comportamento de Adaptee. Ele exigir a
criao de subclasses de Adaptee e far
com que Adapter referencie a subclasse
ao invs do Adaptee em si.
Bridge
Inteno:
Bridge
Aplicabilidade
Bridge
Aplicabilidade
Bridge
Participantes
Bridge
Estrutura
Bridge
Colaboraes:
Bridge
Exemplo
Bridge
Exemplo
Bridge
Exerccio
Bridge
Exerccio
Bridge
Consequncias
1.
2.
3.
Desacopla a interface da
implementao: uma implementao
no fica permanentemente presa a uma
interface. A implementao de uma
abstrao pode ser configurada em
tempo de execuo.
Extensibilidade melhorada: pode-se
estender as hierarquias de Abstraction e
Implementor independentemente.
Ocultao de detalhes de
implementao dos clientes, como o
compartilhamento de objetos
Composite
Inteno:
Composite
Aplicabilidade
Composite
Participantes
Component:
Declara a interface para os objetos na
composio;
Implementa comportamento-padro para
a interface comum a todas as classes;
Declara uma interface para acessar e
gerenciar os seus componentes-filhos;
Opcionalmente define uma interface para
acessar o pai de um componente na
estrutura recursiva e a implementa.
Composite
Participantes
Leaf:
Composite
Participantes
Composite:
Define comportamento para
componentes que tm filhos;
Armazena os componentes-filho;
Implementa as operaes relacionadas
com os filhos presentes na interface de
Component.
Client:
Manipula objetos na composio atravs
da interface de Component.
Composite
Estrutura
Composite
Colaboraes
Composite
Exemplo Prtico Simples
Composite
Exemplo Prtico Simples
Composite
Exerccio
Composite
Exerccio
Composite
Consequncias
Composite
Consequncias
Decorator
Inteno:
Dinamicamente, agregar
responsabilidades adicionais a um objeto.
Decorator
Participantes
Decorator
Estrutura
Decorator
Colaboraes
Decorator
Exemplo bsico simples
Decorator
Exemplo bsico simples
Decorator
Aplicabilidade
Usa-se quando:
Para acrescentar responsabilidades a
objetos individuais de forma dinmica e
transparente, ou seja, sem afetar outros
objetos;
Para responsabilidades que podem ser
removidas;
Quando a extenso atravs do uso de
subclasses no prtica (exploso de
subclasses).
Decorator
Exerccio
Decorator
Exerccio
Decorator
Consequncias
1.
Decorator
Consequncias
2.
Decorator
Consequncias
3.
Decorator
Consequncias
4.
Faade
Inteno
Faade
Participantes
Faade:
Conhece quais classes do subsistema so
responsveis pelo atendimento de uma
solicitao.
Delega solicitaes de clientes a objetos
apropriados do subsistema.
Classes de subsistema:
Implementam a funcionalidade do
subsistema;
Encarregam-se do trabalho atribudo a
elas pelo objeto Faade.
Faade
Estrutura
Faade
Aplicabilidade
Usa-se quando:
Deseja-se fornecer uma interface simples
para um subsistema complexo. Uma
fachada pode fornecer uma viso simples
do sistema, que boa o suficiente para a
maioria dos clientes.
Existirem muitas dependncias entre
clientes e classes de implementao de
uma abstrao.
Se desejar estruturar seus subsistemas
em camadas. Usa-se uma fachada para
Faade
Colaboraes
Faade
Exemplo Prtico Simples
Faade
Exerccio
Faade
Consequncias
1.
2.
3.
Flyweight
Inteno:
Flyweight
Participantes
Flyweight
Participantes
Flyweight
Participantes
Flyweight
Estrutura
Flyweight
Aplicabilidade
Flyweight
Aplicabilidade
Flyweight
Colaboraes
Flyweight
Colaboraes
Flyweight
Exemplo
No desenvolvimento de jogos so
utilizadas vrias imagens. Elas
representam as entidades que compe o
jogo, por exemplo, cenrios, jogadores,
inimigos, entre outros.
Ao criar classes que representam estas
entidades, necessrio vincular a elas
um conjunto de imagens, que
representam as animaes.
Para evitar duplicao de informao
vamos aplicar o padro Flyweight nesse
problema.
Flyweight
Exemplo
Flyweight
Exerccio
Flyweight
Exerccio
Flyweight
Consequncias
Flyweight
Consequncias
As economias de armazenamento so
uma funo de vrios fatores:
Flyweight
Consequncias
Flyweight
Consequncias
Proxy
Inteno:
Proxy
Participantes
Proxy:
Mantm uma referncia que permite ao
proxy acessar o objeto real (real subject).
O proxy pode referenciar um Subject se
as interfaces de RealSubject e Subject
forem as mesmas.
Fornece uma interface idntica a de
Subject, de modo que o proxy possa
substituir o objeto real.
Controla o acesso ao objeto real e pode
ser responsvel pela sua criao e
Proxy
Participantes
Proxy
Participantes
Proxy
Estrutura
Proxy
Colaboraes
Proxy
Aplicabilidade
Proxy
Exemplo Prtico
Proxy
Exemplo Prtico
Proxy
Exerccio
Proxy
Exerccio
Proxy
Consequncias
1.
2.
3.
Padres
Comportamentais
Padres
Comportamentais
Chain of Responsability
Inteno:
Chain of Responsability
Aplicabilidade
Utiliza-se quando:
Mais de um objeto pode tratar uma
solicitao e o objeto que a tratar no
for conhecido antes. O objeto que trata a
solicitao deve ser escolhido
automaticamente;
Se deseja emitir uma solicitao para um
dentre vrios objetos, sem especificar
explicitamente o receptor.
O conjunto de objetos que pode tratar
uma solicitao deveria ser especificado
Chain of Responsability
Participantes
Handler:
Define uma interface para tratar
solicitaes.
Implementa o link ao sucessor (opcional).
ConcreteHandler:
Trata de solicitaes pelas quais
responsvel.
Pode acessar seu sucessor.
O ConcreteHandler trata a solicitao se
puder, caso contrrio, a repassa para o
sucessor.
Chain of Responsability
Estrutura
Chain of Responsability
Colaboraes
Chain of Responsability
Exemplo Prtico
Chain of Responsability
Exemplo Prtico
Chain of Responsability
Exerccio
Chain of Responsability
Exerccio
Chain of Responsability
Consequncias
1.
Chain of Responsability
Consequncias
2.
Chain of Responsability
Consequncias
3.
Command
Inteno:
Command
Participantes
Command
Participantes
Invoker:
Solicita ao Command a execuo da
solicitao.
Receiver:
Sabe como executar as operaes
associadas a uma solicitao. Qualquer
classe pode funcionar como um Receiver.
Command
Estrutura
Command
Colaboraes
Aplicabilidade
Usa-se quando se deseja:
Aplicabilidade
Usa-se quando se deseja:
Command
Consequncias
Command
Exemplo
Command
Exemplo
Command
Exerccio
Command
Exerccio