Buscar

PADROES GRASP

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

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

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ê viu 3, do total de 7 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

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

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ê viu 6, do total de 7 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

Prévia do material em texto

Padrões para Atribuições de Responsabilidades
Motivação 
Más escolhas de atribuição de responsabilidades geram sistemas e componentes frágeis e de difícil manutenção, extensão e reutilização.
Quando utilizar?
Padrões são utilizados durante a criação dos diagramas de interação
O que são Padrões?
Princípios, estilos e regras de programação, codificados em um formato estruturado, descrevendo problema/solução 
Um Padrão é um par nomeado problema/solução, que pode ser utilizado em novos contextos, com conselhos sobre como utilizá-lo em novas situações.
O que não são Padrões?
Novos princípios da Engenharia de Software. Ao contrário, padrões tentam codificar o conhecimento, idiomas e princípios existentes
Responsabilidades e Métodos
Responsabilidade - contrato ou obrigação de uma classe
Métodos - utilizados para implementar Responsabilidades
Tipos de Responsabilidades:
Fazer – ele próprio; iniciar ações em outros objetos; controlar atividades em outros objetos
Conhecer – dados privados; objetos relacionados; coisas que pode calcular e derivar. São dedutíveis do modelo Conceitual
O que são os Padrões GRASP ?
Princípios fundamentais de atribuição de responsabilidades a objetos
Cinco Padrões que abordam questões mais comuns:
Expert (Especialista)
Creator (Criador)
High Cohesion (Coesão Alta)
Controller (Controlador)
Low Coupling (Acoplamento Fraco)
�
Padrão Expert – Especialista
Solução: atribui a responsabilidade ao especialista da informação
Exemplo: Aplicação de Ponto de Venda – Qual a classe que deve conhecer o total de venda?
É necessário conhecer todas as instâncias de ítem de venda e a soma de seus subtotais
A Classe VENDA é a especialista para o Total da Venda
Que informações são necessárias para determinar o total de um ítem de venda? 
ItemVenda.Quantidade
Produto.Preço
ÍtemVenda conhece sua quantidade e seus Produtos associados
Ítem Venda é o especialista para determinar o subtotal 
ÍtemVenda deve conhecer o preço do Produto. 
Produto é o especialista informar o seu preço
Conclusão
a satisfação de uma responsabilidade requer informações espalhadas por diferentes classes. 
desta forma existem vários especialistas parciais que colaboram com a tarefa
Favorece ao acoplamento fraco uma vez que os objetos usam suas próprias informações para executarem as tarefas
As classes ficam “leves” gerando alta coesão 
Padrão Creator – Criador
Solução: atribua à classe B a responsabilidade de criar instâncias da classe A se:
B agrega objetos de A
B contém objetos de A
B registra instâncias de objetos A
B usa de maneira muito próxima objetos A
B tem os dados de inicialização que serão passados para o objeto A, quando de sua criação ( B é um especialista com a relação a criação de A) 
Exemplo: Aplicação de Ponto de Venda – Quem deveria ser responsável pela criação de um ItemVenda referente a uma Venda?
A Classe VENDA é a responsável por criar os ItemVenda
Conclusão
O objetivo do padrão é encontrar um Criador que necessita ser conectado ao objeto criado
O criador pode ser encontrado procurando a classe que tem os dados de inicialização que serão passados durante a criação
Exemplo: criação de uma instância de Pagamento com o total de Venda – Venda deve ser o criador de Pagamento.
�
Padrão Low Coupling (Acoplamento Fraco)
Solução: atribuir a responsabilidade de maneira que o acoplamento permaneça fraco.
Exemplo: Aplicação de Ponto de Venda – Quem deveria ser o responsável pela criação de uma instância de Pagamento com o total da venda e associá-la a Venda?
A Classe VENDA é a responsável por criar o Pagamento
Conclusão
Corresponde a um padrão de avaliação
Não há uma medida que determine quanto um acoplamento é muito forte
O importante é avaliar o grau atual de acoplamento e julgar se seu aumento trará problemas
Se o acoplamento fraco é aplicado em excesso, leva a um projeto fraco, pois conduz a poucos objetos ativos, se coesão, inchados e complexos, que efetuam todo o trabalho.
acoplamento fraco permite entendimento isolado, maior reutilização
�
Padrão High Cohesion (Coesão Alta)
Solução: atribuir uma responsabilidade de modo que a coesão permaneça alta.
Alta Coesão - Uma classe com responsabilidades altamente relacionadas e que não executa um formidável volume de trabalho.
Baixa Coesão - Uma classe que faz muitas coisas não relacionadas ou executa demasiado trabalho. Gera dificuldades para manter, reutilizar, compreender, e constantemente afetadas por mudanças.
Conclusão
Corresponde a um padrão de avaliação
Como regra uma classe com coesão alta tem um número relativamente pequeno de métodos, com funcionalidades relacionadas e não executa muito trabalho.
�
Controller – Controlador
Solução: atribui a responsabilidade do tratamento de uma mensagem de um evento do sistema a uma classe que representa uma das escolhas:
controlador fachada - representa o sistema todo ou todo o negócio ou organização. Adequado quando existem poucos eventos do sistema
controlador de papel - representa algo no mundo real que é ativo ( por exemplo o papel de uma pessoa) e que pode estar envolvido na tarefa. 
controlador de caso de uso - representa um tratador artificial de todos os eventos de sistema de um caso de uso. Adequado quando existem muitos eventos do sistema em diferentes processos.
Observações: 
Deve ser usada a mesma classe controladora para todos os eventos do sistema de um mesmo caso de uso.
	Classes como interfaces externas ( janelas, applet, etc.) não devem executar eventos do sistema. Apenas são responsáveis por receberem estes eventos e delegarem a um controlador
	Operações do sistema que refletem processos de negócio devem ser tratadas na camada de objetos de domínio.
O que é um Controlador?
É um objeto de interface	, responsável por tratar um evento do sistema. Um controlador define um método para a operação do sistema.

Outros materiais

Materiais relacionados

Perguntas relacionadas

Materiais recentes

Perguntas Recentes