본문 바로가기

인터페이스

(3)
항목 33 : 이름 검색과 인터페이스 - 파트 3 (난이도 5) 클래스 디자인 문제인 operator
항목 32 : 이름 검색과 인터페이스 - 파트 2 (난이도 9) 이번엔 클래스에 대하여 알아 보는 항목이다. 클래스란? "클래스는 연관되어진 데이터와 데이터 처리 함수들의 모음을 정의한 것이다" 이제 질문의 시간을 갖어 보자. ① 어떤 함수들이 클래스의 "일부"일까? 그리고 ② 클래스의 인터페이스는 무엇으로 만들어 졌을까? 힌트 확실히 non-static 멤버 함수들은 단단히 클래스와 연결되어 졌다. 그렇다면 static 멤버 함수들은과 자유(free) 함수들의 경우는 어떠한가? 항목 31의 함축적 의미를 시간을 두어 생각해 보자. 분석 ①,② 이 두 질문들의 대답을 좀더 심화 시켜 본다면, 이 대답이 C 형식의 개체지향 프로그래밍에 어떻게 적용 될까? C++의 Koening 검색이 어떻게 적용될까?, Myers 예는? 클래스 의존성을 분석하고 개체 모델을 디자인하는..
항목 22: 데이터 멤버가 선언될 곳은 private 영역임을 명심하자 private 영역에 넣었다면? private는 클래스 외부에서의 그 어떤 접근도 허용하지 않겠다는 인터페이스이다. 항상 클래스 내부에서만 접근 가능하다. 이 때문에 많은 장점 있겠지만, 대표적으로 엉터리로 쓰기엔 어렵게 만들기 위해서이고, 캡슐화를 위해서이다. 엉터리로 쓰기엔... 이부분은 항목 18에 설명을 했고, 캡술화란 무엇인지는 지겹게 들었을 것이다. 캡슐화 부분만 다시 지적한다면, 객체 내부에 private 영역에 데이터를 넣음으로써 객체간의 혼동과 디버그, 보안 인터페이스를 보다 쉽게 막거나나 혹은 더 쉽게 가능해 지기 때문이다. 이처럼 캡슐화를 하게 되면, 모든 데이터를 함수 인터페이스 뒤에 감추게 되는데, 이때 구현상의 융통성을 전부 누릴 수 도 있다. 예를 들자면, .. 내부 데이터 접..