Pelo que pesquisei sobre coesão de classes, a definição mais sucinta que encontrei foi:
Coesão é o quanto as tarefas que uma classe deve realizar estão relacionadas com um mesmo conceito. Por exemplo, uma classe ContaCorrente deve ser apenas atributos como Saldo e métodos Sacar e Depositar.
Baixa coesão é uma classe que realiza mais de conceito. Por exemplo, a classe Cliente tem os atributos cadastrais (nome, endereco, sexo) e inclui nela rotinas como fazerEmprestimo, realizarSaque.
Explicito na questão e esclarecendo o comentário do colega: Acoplamento é quanto um elemento (classe, método, atributo) depende e conhece do outro. Elementos muito acoplados geralmente são muito dependentes, mudou um e você com certeza vai ter que mudar o outro.
Ao meu entender, a definição de coesão esta correta: cada classe deve ter atributos e métodos de seu próprio domínio (classe Cliente não tem domínio da ContaCorrente, conforme comentário anterior). Domínio aqui significa o contexto em que essa aplicação esta inserida, não apenas como uma fase de análise na ES.
Embora uma entidade possa ser representada por mais de uma classe, isso não é recomendável. Você terá código duplicado em classes diferentes (caso não use de herança/polimorfismo), o que aumenta o acoplamento entre esses objetos. Mantendo o exemplo anterior, uma entidade "Cliente" pode ser representada pelas classes Cliente e ClienteResidencial. Ambos representam o domínio de informações de um cliente e caso um atributo existente nessa entidade mude seu tipo de boolean para int, por exemplo, você terá que alterar duas classes ao invés de uma!
Refatorar não é aumentar linhas de código, mas sim simplificar e melhorar código, o que muitas vezes traz a redução dessas linhas. Quanto mais o código de uma classe for coerente com o nome que carrega, mais coesa ela é.