강좌/Spring 3.0

[독자 질답] 캡슐화의 목적과 필요성

여름나라겨울이야기 2015. 9. 19. 16:27
728x90

네이버 서적 리뷰에 lcy**** 님이 올려주신 리뷰에 대한 답변입니다.


책 저자입니다. 

진심 깃든 리뷰에 감사드립니다.

책 서문에 있듯이 자바 서적 한권 정도는 갖고 계신 분들을 대상으로 집필하다보니 캡슐화(정보은닉)의 목적과 필요성을 설명하지 않고 넘어가게 되었습니다.

자바 책으로 구성하기에는 설명할 것이 너무 많고 스프링만 다루기에는 책이 너무 얇아질 것 같아서 그 중간의 연결점 역할에만 최대한 충실하게 하려고 했던 결과겠지요.


궁금해 하신 캡슐화(정보은닉)의 목적과 필요성을 잠시 설명 드리겠습니다.

정보은닉이라는 보조 제목이 결국 모든 것을 말해 주는데요.


Person 클래스의 honggildong 객체가 age 속성을 가지고 있다고 가정해 보겠습니다.

age 속성이 public 으로 그대로 노출되고 이것이 라이브러리 형태로 외부에 제공된다면


honggildong.age = -100;


이라고 하는 받아들이 수 없는 값이 셋팅될 수도 있습니다.


age 를 private 으로 하고 여기에 public 으로 setAge(int age) 라고 주게 된다면 엉뚱한 값이 들어왔을때 방어할 수 있는 코드를 작성할 수 있습니다.


public void setAge(age) {

  if(age < 0) {

    return new IllegalArgumentExcepiton();

  }

  

  this.age = age;

}


이러한 방어적 프로그래밍은 은행의 잔고 등등 많은 곳에서 필요하게 됩니다. 또한 읽기 전용인 경우 getter 만, 쓰기 전용인 경우 setter 만 제공할 수도 있습니다.


세상 모든 프로그래머들이 다 믿고 일할 수 있는 사람들이라면 이렇게 방어적인 정보 은닉이 필요없겠지만 세상에는 참 많은 블랙 헤커들이 존재합니다. 이들로 부터 정보 자원을 보호하기 위해서는 정보 은닉을 가능하게 하는 캡슐화가 반드시 필요해 지는 것입니다.

세상 모든 프로그래머과 사람들이 다 믿을만 하다면 보안이라고 하는 분야가 필요없어 지는 것이죠.


제가 좋아하는 현실 세계의 예로 든다면 모든 운전자가 다 상식적이고 인격적이라면 방어 운전이 필요없는 것과 같습니다.

우리가 꼭 방어 운전을 해야하는 이유가 ITC 분야에 보안이 필요한 이유, 캡슐화를 통해 정보를 은닉해야 하는 이유라고 보시면 되겠습니다.


더 많은 내용은 역시 블러그와 갖고 계산 자바 서적 또는 여유가 되신다면 대형 서점에 한번 나들이 다녀오시면 좋겠네요. ^^;


다시 한번 진심 어린 리뷰에 감사드립니다.

반응형

'강좌 > Spring 3.0' 카테고리의 다른 글

세상에 이런 일이...  (6) 2015.09.25
드디어 책이 나왔습니다.  (53) 2015.03.30
016. OOP 추상화 = 모델링  (40) 2013.02.07
015. 추상 / 추상화  (15) 2013.02.06
014. 애너테이션 기반 DI, AOP, 스프링 설정 파일  (15) 2013.01.23