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.

quinta-feira, 14 de fevereiro de 2008

Aulas do dia 12 e 13/02/2008 PROJETO ORIENTADO A OBJETO




UML provê dois tipos de diagramas de interação:
seqüência e colaboração.

* Diagrama de Seqüência

Ilustra objetos e atores que colaboram na execução de uma tarefa, exibindo o tempo de vida de objetos, as mensagens enviadas e sua ordem no tempo. A ordem em que os objetos são dispostos não é importante. Porém, para facilitar a leitura, coloque mais a esquerda os objetos que serão ativados primeiro. O tempo é representado de cima para baixo por uma linha tracejada abaixo de cada objeto. Cada objeto é exibido em um retângulo rotulado como nome do Objeto:


Exemplo de Diagrama de Seqüência.

* Colaboração


Mostra os objetos que interagem para realizar uma tarefa e os relacionamentos entre eles. Relacionamentos são derivados das associações no diagrama de classes. É necessário incluir apenas os relevantes para a tarefa. Interações são representadas pela seqüência de passagem de mensagens.


Nas próximas aulas iremos comentar a respeito de Padrões GRASP = General Responsability Assignment Software Patterns.
Descrevem princípios fundamentais de atribuição de responsabilidade a objetos.
Alguns padrões GRASP principais:
Especialista (Expert)
Criador (Creator)
Coesão alta (High Cohesion)
Acoplamento fraco (Low Coupling)
Controlador (Controller)