캡슐화와 데이터 은닉
객체 사용에 해당되지 않는 세부 정보는 다른 모든 객체로부터 숨겨야 한다. 캡슐화는 객체에 속성과 행위가 같이 포함된다는 사실로 정의된다. 데이터 은닉은 캡슐화의 중요한 일부이다. 예를들어, 어떤 숫자의 제곱을 계산하는 객체가 결과를 얻기 위한 인터페이스를 제공해야 한다고 하자. 그러나 요청하는 객체에서 제곱을 계산하기 위해 사용하는 내부 속성 및 알고리즘을 사용하게 할 필요는 없다. 캡슐화를 염두에 두고 설계해야 클래스가 견고하다. 인터페이스는 객체간 의사소통하는 근본적인 방법을 정의한다. 클래스를 설계할 때마다 객체를 올바른 인