private 영역에 넣었다면?
private는 클래스 외부에서의 그 어떤 접근도 허용하지 않겠다는 인터페이스이다. 항상 클래스 내부에서만 접근 가능하다. 이 때문에 많은 장점 있겠지만, 대표적으로 엉터리로 쓰기엔 어렵게 만들기 위해서이고, 캡슐화를 위해서이다.


엉터리로 쓰기엔... 이부분은 항목 18에 설명을 했고, 캡술화란 무엇인지는 지겹게 들었을 것이다. 캡슐화 부분만 다시 지적한다면, 객체 내부에 private 영역에 데이터를 넣음으로써 객체간의 혼동과 디버그, 보안 인터페이스를 보다 쉽게 막거나나 혹은 더 쉽게 가능해 지기 때문이다.


이처럼 캡슐화를 하게 되면, 모든 데이터를 함수 인터페이스 뒤에 감추게 되는데, 이때 구현상의 융통성을 전부 누릴 수 도 있다. 예를 들자면, .. 내부 데이터 접근시 카운팅을 하거나, 다른 객체에 메세지를 전달하거나, .. 가공을 해서 끄낸다거나 등등등 장점이 있다.


무엇인가 설명이 부족한데?
정확하다, 우선 멤버 데이터를 public으로 넣고, 클래스 외부에서 정말 많은 곳에서 그 멤버 데이터를 썻다고 가정하고, 클래스 수정이라는 불가피한 사정으로 그 멤버 데이터를 지워야 한다고 치자. 그러면 .. 클래스 외부에는 정말 많은곳을 다 수정해야 하고, 테스트도 해야 한다! 물론 private에 넣어도 똑같겠지만 그 작업량은 현격하게 줄어 든다. 이게 가장 중요하다! 이 뜻은 .. 위에 설명한 밑줄을 풀이 한것이다.


이것만은 잊지 말자!
1. 멤버 데이터는 private 에 넣자!
2. public 과 protected 는 도토리 키재기 인터 페이스이다!

관련 링크
http://redinlife.egloos.com/1625285
http://kldp.org/node/93763
http://kldp.org/node/89756
http://ikpil.tistory.com/310
http://www.ac-plus.net/bbs/board.php?bo_table=acProgram_Cpp&wr_id=3439
http://nlp.kookmin.ac.kr/~sskang/lect/cpp/ppp.htm


posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요