아아, 이해하는데 시간 걸렸다. friend 함수를 사용하라는게 아니라 비멤버 비프렌드 함수를 이용하라는 뜻이다!

자, 왜 비멤버 비프렌드 함수와 가까워져야 할까?
우선 이 말은, 클래스 공개 내부 멤버함수를 조합하는 편의 함수에게만 적용된다.. 이 함수는 클래스 내부에 접근할수가 없고, 1. 무조건 클래스의 멤버 함수만을 이용해야 하며, 2. 멤버 함수를 이용하기 위해서는 매개체인 객체가 항상 필요하기 때문이다. 즉, 어디서 호출되는지 한눈에 파악할수 있으며, 수정 구역도 한정되기 때문이다.


이것으로 구체적인 장점은 무엇이 있을까?
첫째, 캡슐화를 더 강화 할수 있다
왜냐하면, private 멤버 데이터 접근 함수가 적어지기 때문이다.(많은 수의 private 접근 허용 함수가 있다면, 많은 수의 변경 가능성을 제공하는것, 이것이 바로 캡슐화를 약하게 만든다)


둘째, 컴파일 의존성 및 패키지 형태의 높은 유연성을 제공할수 있다.
특정 멤버 함수의 조합으로 원하는 편의 함수를 만들때, 어떻게 조합하느냐에 따라 어떤 편의 함수를 만들수가 있게 되고, 이런 이유로 파일 분활이 가능해 진다. 파일 분활이 가능해지면, 원하는 기능만 컴파일 할수 있으며, 패키지 형태로 나뉜 한정 구역에서만 수정 및 디버그를 할 수 있는 패키지 형태의 높은 유연성을 제공해 준다,


캡슐화의 진정한 의미를 파악했다면, 자연스럽게 이런 방식으로 넘어 갈 듯 이다.


관련링크
http://redinlife.egloos.com/1626634
http://www.terms.co.kr/encapsulation.htm
http://ikpil.tistory.com/308
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요