잘 설계된 컴포넌트란 클래스 내부 데이터와 내부 구현 정보를 얼마나 잘 숨겼느냐이다. 이런 컴포넌트는 모든 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔히 분리한다. 즉, 캡슐화(정보 은닉)를 얼마나 잘 구현하였는지가 중요하다. 모든 클래스와 멤버의 접근성을 가능한 한 좁혀야 한다. 캡슐화의 장점 1. 여러 컴포넌트를 병렬로 개발할 수 있어 시스템 개발 속도를 높인다. 2. 각 컴포넌트를 더 빨리 파악하여 디버깅할 수 있고, 다른 컴포넌트로 교체하는 부담도 적어 시스템 관리 비용을 낮춘다. 3. 다른 컴포넌트에 영향을 주지 않고 해당 컴포넌트만 최적화할 수 있으므로 성능 최적화에 도움이 된다. 4. 외부의 의존성이 낮은 컴포넌트라면 소프트웨어 재사용성이 높아진다. 5. 시스템이 완성되지 않은 상태에서도..