O GRASP define pelos princípios low coupling e high cohesion que as classes em um sistema devem ser definidas para ter baixo acoplamento e alta coesão. Mas o que é acoplamento e coesão? Vejamos a seguir.
a) Coesão
Digamos o seguinte código:
public class FormCadastro { public FormCadastro() { } public void gravarCliente() { } public void gravarFornecedor() { } public void enviarEmail() { } }
A classe FormCadastro está coesa? A responsabilidade de gravar clientes ou fornecedores e enviar e-mail deveriam ser desta classe? Como suas responsabilidades não estão bem definidas, dizemos que ela está com baixa coesão.