클래스의 내부와 외부를 구분해야 하는 이유 1. 경계의 명확성이 객체의 자율성을 보장하기 때문이다. 객체가 자율적인 존재로 우뚝 서기 위해서 외부의 간섭을 최소화해야 한다. 일반적으로 객체의 상태는 숨기고 행동만 외부에 공개해야 한다. 외부에서는 객체가 어떤 상태에 놓여 있는지, 어떤 생각을 하고 있는지 알아서는 안 되며, 결정에 직접적으로 개입하려고 해서도 안 된다. 객체에게 원하는 것을 요청하고는 객체가 스스로 최선의 방법을 결정할 수 있을 것이라는 점을 믿고 기다려야 한다. 캡슐화와 접근 제어는 객체를 두 부분으로 나눈다. 하나는 외부에서 접근 가능한 부분으로 이를 퍼블릭 인터페이스라 부른다. 다른 하나는 외부에서 접근 불가능하고 오직 내부에서 접근 가능한 부분으로 이를 구현이라 부른다. 2. 프로..