Orientação a Objetos - Princípio do Mínimo Conhecimento, Acoplamento e Coesão
Atualizado em:
Todos sabemos que para uma boa aplicação OO precisamos obedecer a dois princípios básicos: Baixo Acoplamento e Alta Coesão.
Acoplamento
Acoplamento é quanto um elemento (Classe, objeto, métodos e Atributos) depende e conhece do outro. Elementos muito acoplados, dependem muito uns dos outros, assim, se você altera um deverá alterar o outro.
Se você precisa 'entrar' (com o operador ponto) em várias classes para recuperar um método, por exemplo, sua aplicação está, provavelmente, com um Alto acoplamento.
Alto Acoplamento:
public int getIdade(){
return Util.getFuncoes.getFuncoesData.calculaIdade(nascimento);
}Baixo Acoplamento:
public int getIdade(){
return Util.calculaIdade(nascimento);
}Coesão
Coesão é quantas tarefas estão atribuídas a um Elemento, ou seja, se uma classe faz mais do que ela deveria fazer, ela esta com uma coesão baixa.
Baixa Coesão:
public class Aluno(){
String nome;
int[] notas;
public void setNome(String nome){
this.nome=nome;
}
public String getNome(){
return nome;
}
public void setNotas(int[] notas){
this.notas=notas;
}
public double calculaMedia(){
//código para calcular média
return media;
}
}Alta Coesão:
public class Aluno(){
String nome;
public void setNome(String nome){
this.nome=nome;
}
public String getNome(){
return nome;
}
}
public class Notas{
Aluno aluno;
int[] notas;
public Notas(Aluno aluno){
this.aluno=aluno;
}
public void setNotas(int[] notas){
this.notas=notas;
}
public double calculaMedia(){
//código para calcular média
return media;
}
}Princípio do Mínimo Conhecimento
O Princípio do Mínimo Conhecimento se baseia muito no acoplamento, pois parte da ideia de realizar menos conexões possíveis, quanto menos classes souberam de outras melhor.
Sem o princípio:
Date dataNascimento = pessoa.getDataNascimentoe(); Util.calculaIdade(dataNascimento);
Com o princípio:
pessoa.calculaIdade();
No primeiro exemplo, você precisa saber a data de nascimento da pessoa para então calcular, no segundo não, está encapsulado dentro da Classe Pessoa, posso manter a data de nascimento privada, por exemplo.
Abraços e fique em Paz.

Deixe um comentário