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