Acoplamento é o grau de dependência entre módulos, classes ou componentes de um sistema de software. Quando dois componentes estão fortemente acoplados, mudanças em um exigem alterações no outro. Quando estão fracamente acoplados, cada um pode ser modificado, testado e substituído de forma independente.
O acoplamento é analisado junto com a coesão — que mede o quanto as responsabilidades dentro de um módulo estão relacionadas. O objetivo em bom design de software é baixo acoplamento + alta coesão.

Tipos de acoplamento (do pior ao melhor)
- Acoplamento por conteúdo: Um módulo altera diretamente dados internos de outro (pior)
- Acoplamento comum: Módulos compartilham variáveis globais
- Acoplamento de controle: Um módulo controla o fluxo de outro via parâmetros
- Acoplamento por dados: Módulos se comunicam apenas por parâmetros bem definidos (melhor)
Relação com Abstração
A abstração é uma das principais ferramentas para reduzir acoplamento. Interfaces, injeção de dependência e eventos desacoplam componentes ao esconder detalhes de implementação.
Leia o artigo completo: O que é Acoplamento? Tipos, impactos e como reduzir

