Академический Документы
Профессиональный Документы
Культура Документы
Orientado a
Objetos e Componentes
Nilseu Padilha
npadilha.faqi@gmail.com
Autor: Prof. Federico Delgado
Agenda
Introduo:
Padres de Projeto
GRASP Patterns
Padres de Projeto
Em ingls, Design Patterns
Comeando pelo incio:
O que um padro ?
Padres de Projeto
"Cada
"Os
Padres de Projeto
Possui
Padres de Projeto
E
porque aprender ?
Padres de Projeto
Como
descrever um padro?
Padres de Projeto
Quais
classificaes ?
Padres de Projeto :
GRASP
5 padres fundamentais
4 padres avanados
Padres de Projeto :
GRASP
Tipos:
Bsicos
Creator (Criador)
Expert (Especialista da Informao)
Low Coupling (Baixo Acoplamento)
High Cohesion (Alta Coeso)
Avanados
Polymorphism (Polimorfismo)
Pure Fabrication (Fabrio/Inveo Pura)
Indirection (indireo)
Protected Variations (Variaes
Protegidas)
Padres de Projeto :
GRASP
Responsabilidade:
Um contrato ou obrigao de um
tipo ou classe (Booch e Rumbaugh)
Responsabilidades esto
relacionadas s obrigaes de um
objeto em termos de seu
comportamento.
Padres de Projeto :
GRASP
Dois
tipos de responsabilidades
bsicas:
Fazer (doing)
Fazer algo ele prprio(criar um objeto,
executar uma operao, ...)
Iniciar aes em outros
objetos(delegao).
Controlar e coordenar atividades em
outros objetos.
Conhecer (knowing)
Conhecer dados privados encapsulados.
Conhecer objetos relacionados.
Padres de Projeto :
GRASP
Responsabilidade
no a mesma
coisa que um mtodo.
Mtodos so implementados para
satisfazer as responsabilidades
Uma responsabilidade pode ser
cumprida por um nico mtodo ou
uma coleo de mtodos
trabalhando em conjunto
Padres
de projeto so princpios
para guiar a atribuio de
responsabilidades aos objetos.
GRASP : Especialista
Problema:
GRASP : Especialista
Exemplo:
no sistema de venda,
quem seria o responsvel por
calcular o valor total da venda? E
o valor parcial? E por unidade?
Sales
SalesItem
Register
ProductDescript
ion
GRASP : Especialista
O
GRASP : Especialista
Pelo
GRASP : Especialista
GRASP : Especialista
Onde
Lembrar
que existem
especialistas parciais que
colaboram numa tarefa
informao espalhada
comunicao via mensagens
GRASP : Especialista
Benefcios:
GRASP : Criador
Problema:
GRASP : Criador
Exemplo:
Register
GRASP : Criador
A
GRASP : Criador
Objetivo
GRASP : Acoplamento
Baixo
Problema:
GRASP : Acoplamento
Baixo
GRASP : Acoplamento
Baixo
GRASP : Acoplamento
Baixo
GRASP : Acoplamento
Baixo
GRASP : Acoplamento
Baixo
Uma classe com acoplamento
forte (ou alto) depende de muitas
outras classes
Tais classes podem ser
indesejveis, algumas sofrem dos
seguintes problemas:
modificaes locais foradas
decorrentes de modificaes em
classes relacionadas
so mais difceis de entender
isoladamente
so mais difceis de reutilizar, pois
GRASP : Acoplamento
Baixo
Exemplo:
Payment
Register
GRASP : Acoplamento
Baixo
Soluo
1:
GRASP : Acoplamento
Baixo
Soluo
2:
GRASP : Acoplamento
Baixo
GRASP : Acoplamento
Baixo
Em
GRASP : Acoplamento
Baixo
Na
GRASP : Acoplamento
Baixo
Consideraes:
GRASP : Acoplamento
Baixo
Vantagens:
so difceis de compreender
so difceis de reutilizar
so difceis de manter
so delicadas, constantemente afetadas por
modificaes
GRASP : Polimorfismo
Problema:
GRASP : Polimorfismo
O
GRASP : Polimorfismo
No
GRASP : Polimorfismo
Benefcio:
Facilidade de manuteno
Facilidade de insero de um novo
tipo de autorizao
GRASP : Indireo
Problema:
GRASP : Indireo
Exemplo:
GRASP : Indireo
Criar
um objeto intermedirio,
fazendo indireo para o servio;
So criados um ou mais nveis de
indireo, para possibilitar a
reutilizao e substituio de
cdigo;
GRASP : Indireo
Exemplo:
GRASP : Variao
Protegida
Problema:
Como atribuir
responsabilidades a objetos,
subsistemas e sistemas, de modo
que as variaes ou a
instabilidade nesses elementos
no tenham um impacto
indesejvel sobre outros
elementos?
Soluo: Identifique pontos de
variao ou instabilidade
prevista; atribua
GRASP : Variao
Protegida
Toda
GRASP : Variao
Protegida
Mecanismos
de Variaes Protegidas
GRASP : Variao
Protegida