Blog referente a aula do dia 24/3/2008
Padrão GRASP Alta Coesão
A abordagem desse assunto nos leva a seguinte pergunta sempre que nos deparamos com classes complexas.
Como gerenciar a complexidade ?
A Coesão mede quão focadas ou relacionadas estão os módulos de uma classe.
Características de uma classe com baixa coesão.
- Difícil de entender
- De difícil reuso
- De difícil manutenção
- Assumi responsabilidades demais , ou seja , causa uma sobrecarga na classe.
E qual seria a solução ???
Atribuir responsabilidades aos métodos mantendo-se a coesão.
Como nós já sabemos , quanto maior a coesão mais baixo o acoplamento e isso é a melhor solução no caso.
Tipos de Coesão
Coesão Coincidental
Nela não existe nenhuma coesão entre os módulos , eles se agrupam por coincidência
public class Angu{
public void acharPadrão ( ){
}
public void calcularMedia ( ){
}
public void obterArquivo ( ){
}
Lógica
Este Padrão tem que ser respeitado assim como o baixo acoplamento, a alta coesão deve ser mantida dentro do método.
Coesão Temporal
Os módulos estão coesos , por algum evento temporal.
Ex: inicializar , finalizar.
Um outro exemplo é o famoso arquivo "INI" do Windows, vc coloca tags nesse arquivo INI que configura tudo, isso é um exemplo de coesão temporal.
Coesão de Comunicação
Nessa coesão os métodos agem sobre o mesmo dado , mas isso não significa que sejam métodos coesos, portanto não deveriam estar juntos.
Coesão sequencial
Essa aí não é tão ruim , mas esta longe de ser a melhor
Ocorre da seguinte maneira , nela os módulos estão juntos apenas pq a saída de um é a entrada do outro.
Coesão Funcional
Nela os módulos estão coesos de tal forma a trabalhar num mesmo objetivo, ou seja todos os métodos estão focados em um único objetivo.
Coesão Procedural
Esta envolvida com agrupamento de módulos, faz com que os módulos se agrupem por procedimentos, mesmo não sendo coesos.
Agora que vimos um pouco sobre alta coesão , vamos falar um pouco sobre as suas consequencias
- Melhora o reuso da classe
- Melhora o entendimento da classe
- Nela vc regula a forma de granularidade da aplicação
Bom , isso foi tudo o que eu entendi até agora , com isso nós encerramos os Padrões GRASP, espero que tenha sido útil a alguém o que eu escrevi , e fico no aguardo de comentários !!!!!
Bom fds a todos
boa prova para todos nós !!!!