segunda-feira, 25 de fevereiro de 2008

Aula do Dia 18 e 19-02-2008

Padrões GRASP
GRASP: General Responsibility Assignment Software
Patterns.
Padrões de análise catalogados por Craig Larman.
Indicam como atribuir responsabilidades a classes da
melhor forma possível.
Úteis na construção de
diagramas de interações
diagramas de classes
Exemplo de Alguns padrões GRASP: Expert, Creator, High Coesion,
Low Coupling, Controller.

COESÃO ALTA.
A coesão é uma medida do quão fortemente relacionadas e focalizadas são as responsabilidades de uma classe.
Uma classe com baixa coesão:
faz muitas coisas não-relacionadas
executa trabalho demais.
Classes não coesas são:
difíceis de compreender
difíceis de reutilizar
difíceis de manter
sensíveis a mudanças.

É extremamente importante assegurar que as responsabilidades atribuídas a cada classe sejam altamente relacionadas.
Em um bom projeto OO, cada classe não deve fazer muito trabalho.
Cada classe deve capturar apenas uma abstração.
Como perceber que a coesão de uma classe está baixa?
Quando alguns atributos começam a depender de outros.
Quando há subgrupos de atributos correlacionados na classe.


ACOPLAMENTO FRACO
O acoplamento é uma medida de quão fortemente uma
classe está conectada a outras classes, tem conhecimento das mesmas ou depende delas.
Uma classe com baixo (fraco) acoplamento não depende de muitas outras.
Uma classe com acoplamento forte é:
mais difícil de compreender isoladamente
mais difícil de reutilizar (seu uso depende da reutilização das outras classes da qual ela depende)
sensível a mudanças nas classes associadas.
Sempre que possível, evite que o envio de mensagens implique na criação de associações redundantes no modelo.

ESPECIALISTA DA INFORMAÇÃO


É o padrão mais usado para atribuir responsabilidades
Problema: dado um comportamento (responsabilidade) a qual classe essa responsabilidade deve ser alocada?
Solução: atribuir essa responsabilidade ao especialista da informação – a classe que tem a informação necessária para satisfazer a responsabilidade.

Nenhum comentário: