Page 92

용한다는 개념을 설명한 바 있다. 코드를 디자인할 때도 이와 마찬가지로 인터페이스와 구현을 분명히 분리해야 한다. 그러면 코드를 보다 사용하기 쉬워지는데, 가장 큰 이유는 클라이언트 가 그 기능을 사용하는 데 있어 내부 구현은 구체적으로 몰라도 되기 때문이다. 추상화를 통해 코드를 인터페이스와 구현으로 분리한다. 따라서 재사용할 수 있는 코드를 디자 인하는 과정은 크게 두 가지로 나뉜다. 첫째, 코드의 구조를 잘 구성하는 것이다. 클래스 계층 의 구성 방식과 템플릿 사용 여부, 서브시스템으로 나누는 방식 등을 고려해야 한다. 둘째, 여러분이 작성한 라이브러리나 코드에서 제공하는 기능을 사용하는 데 ‘진입점’ 역할을 하는 인터페이스를 디자인해야 한다.

6.2.1 추상화 방법 추상화의 원칙은 4장에서, 이를 객체지향 디자인에 적용하는 방법은 5장에서 설명했다. 이러 한 추상화 원칙을 따르기 위해서는 내부 구현사항을 가리는 인터페이스를 제공해야 한다. 이때 인터페이스와 구현을 명확히 분리해야 한다. 추상화를 적용하면 코드를 작성한 자신뿐만 아니라 그 코드를 사용하는 클라이언트에게도 도움 된다. 클라이언트에게 도움이 되는 이유는 구체적인 구현사항에 신경 쓰지 않아도 되기 때문이 다. 코드의 구체적인 작동 방식을 이해하지 않고도 그 코드에서 제공하는 기능을 이용할 수 있기 때문이다. 코드 작성자에게 도움이 되는 이유는 인터페이스를 변경하지 않고도 내부 구현 코드 를 쉽게 수정할 수 있기 때문이다. 따라서 클라이언트가 코드를 사용하는 방식을 바꾸게 하지 않 으면서 업그레이드나 버그 픽스를 진행할 수 있다. 동적 링크 라이브러리를 활용하면 클라이언 트가 실행 파일을 다시 빌드할 필요도 없다. 마지막으로 라이브러리 작성자 입장에서 그 라이브 러리의 주요 기능과 이에 대한 바람직한 사용법을 명시할 수 있다는 것도 장점이다. 문서화 방법 은 3장을 참조한다. 인터페이스와 구현을 명확히 분리하면 그 라이브러리를 사용하는 클라이 언트가 작성자의 의도와 다르게 코드를 사용해서 예상치 못한 동작이나 버그가 발생하는 상황 을 막을 수 있다. CAUTION_ 인터페이스를 디자인할 때는 구현 세부사항을 클라이언트에 드러내지 않는다.

어떤 라이브러리는 한 인터페이스에서 리턴한 정보를 다른 곳에 전달하기 위해 클라이언트 코드 에서 보관하도록 구성된 것도 있다. 이렇게 보관하는 정보를 핸들 handle 이라 부르는데, 라이브러

240 2부 전문가답게 C++ 소프트웨어 디자인하기

Profile for 한빛미디어

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

전문가를 위한 C++ (개정4판) - 맛보기  

『전문가를 위한 C++』(개정4판)은 새로 추가된 기능과 관련 도구를 비롯해 C++에 대한 모든 내용을 코드와 솔루션 위주로 소개한다. 저자는 실전 프로그래밍에 적용할 수 있는 현실적인 기법을 다양하게 소개하였으며, 본 교재는 C++를 더 깊이 이해하...

Advertisement