Coesão está ligado ao princípio da responsabilidade única. Diz que uma classe deve ter apenas uma única responsabilidade e realizá-la de maneira satisfatória, ou seja, uma classe não deve assumir responsabilidades que não são suas .
Acoplamento significa o quanto uma classe depende da outra para funcionar. E quanto maior for esta dependência entre ambas, dizemos que estas classes elas estão fortemente acopladas.
Encapsulamento vem de encapsular, que em programação orientada a objetos significa separar o programa em partes, o mais isolado possível. A idéia é tornar o software mais flexível, fácil de modificar e de criar novas implementações. O Encapsulamento serve para controlar o acesso aos atributos e métodos de uma classe. É uma forma eficiente de proteger os dados manipulados dentro da classe, além de determinar onde esta classe poderá ser manipulada.
Fonte: DevMedia
a) O encapsulamento e a adoção de interfaces permitem diminuir o acoplamento e a coesão entre classes. (Aumenta Coesão)
b) Cada classe deve assumir uma única responsabilidade bem definida como meio de aumentar a coesão e assegurar o encapsulamento. (Assumir responsabilidade única não assegura o encapsulamento, é preciso fazer mais coisas...)
c) As responsabilidades de uma classe devem estar relacionadas entre si para facilitar o entendimento e aumentar as chances de sua reutilização.(Gabarito, classes bem definidas, coesas, facilitam o entendimento e potencializa sua reutilização)
d) Para promover a flexibilidade e a facilidade de manutenção a longo prazo, as classes devem ser fortemente acopladas e encapsuladas. ( O objetivo é o baixo acoplamento entre as classes e alta coesão)
e) Minimizar o acoplamento implica em classes com alta coesão (A palavra IMPLICAR é um pouco forte. Minimizar o acoplamento PODE melhorar a coesão, mas dizer que IMPLICA está errado)