[…] coupling (or dependency) is the degree to which each program module relies on each one of the other modules. — Wikipedia http://en.wikipedia.org/wiki/Coupling_(computer_science) In object-oriented programming, removing dependencies is done by using interface. Thus, if class A is dependent on class B, we introduce interface C, which is implemented by B. Now A depends on C (see below). This first step in decoupling is called programming by interface. Anyway, we sti