Orientação a Objetos - Princípio do Mínimo Conhecimento, Acoplamento e Coesão

1 minutos de leitura

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

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