Falando nisso, eu fui ler no wikipedia a definição de coesão em linguagem de programação e o conceito ficou muito confuso. Alguém saberia explicar melhor?
Coesão (em oo) - O quanto uma classe cumpre corretamente suas responsabilidades, não assumindo responsabilidades de outros classes (conceitos) mantendo a granulidade.
Resumindo: (de uma maneira bem resumida)
Pessoa
-nome
-idade
+vender()
+autenticar()
+enviarEmail()
A classe acima possui métodos que não deveriam pertencer a ela (de acordo com o negócio) além de possuir uma alta granulidade de responsabilidades possivelmente uma refatoração extraindo classes desta seria uma boa solução.
Essa coesão depende sempre do domínio em questão.