자바(Java)/JAVA 2SE

캡슐화(Encapsulation)란?

본클라쓰 2010. 11. 29. 15:57


 객체는 데이터(속성)과 데이터를 처리하는 메소드를 가지고 있다. 객체를 사용하는 입장에서는 이 때 객체를 사용하는 쪽에서 그 객체가 하는 기능만 알면 충분히 객체를 사용할 수 있고, 그 처리 방법에 대해서는 알 필요가 없다. 자바는 클래스의 속성과 메소드에 접근 제한을 걸어 외부에서 직접 속성과 메소드에 접근할 수 없게 만들어 준다. 이것이 캡슐화이다.

 

 객체를 작성할 때 프로그램 작성자는 숨겨야 하는 정보(private)와 공개해야 하는 정보(public)를 구분하여 기술 할 수 있으며 객체를 사용하는 사람은 객체 중에 공개하는 정보에만 접근할 수 있다. 이러한 기법을 제공함으로서 객체의 사용자로부터 정보를 은폐(information hiding)를 할 수 있다.

 

 

캡슐화를 통한 정보 은폐의 장점은 다음과 같다. 

  • 객체에 포함된 정보의 손상과 오용을 막을 수 있다.
  • 객체 조작 방법이 바뀌어도 사용 방법은 바뀌지 않는다.
  • 데이터가 바뀌어도 다른 객체에 영향을 주지 않아 독립성이 유지된다.
  • 처리된 결과만 사용하므로 객체의 이식성이 좋다.
  • 객체를 부품화 할 수 있어 새로운 시스템의 구성에 부품처럼 사용할 수 있다.