Model: Encapsulation vs Information hiding
often used interchangeably but actually refer to two separate, and largely orthogonal, qualities Encapsulation behavior of an object can only be affected through its API reduces dependencies Information hiding Conceals how an object implements its functionality work at higher level abstraction Aliasing break encapsulation by sharing references to mutable objects increases dependencies accidental aliasing can couple unrelated parts of a system (src: Book_ Growing Object Oriented Software, Guided By Tests - Steve Freeman & Nat Pryce)