로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

제네릭 프로그래밍과 디자인 패턴을 적용한 Modern C++ Design

   
지은이 Andrei Alexandrescu/이기형   |   출판사 인포북  |   발행일 2003년 07월 30일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 20,000원18,000원 10%
마일리지 5% 1,000원
발행일 2003-07-30
ISBN 8980545177 | 9788980545179
기타정보 번역서 | 498쪽
예상출고일
배송비 2,000원 (20,000원이상 무료배송)
   
프로그래밍언어
종합지수 41p 27 위
   
이 책의 원서
  Modern C++ Design: Generic Programming and Design Patterns Applied
Addison-Wesley Professional | ALEXANDRESCU
주의사항 더이상 출간되지 않습니다.
 

[PDF보기]

모던 C++ 디자인은 그야말로 탁월한 책이다. 이 책은 '제네릭 패턴'이나 '패턴 템플릿'들을 이용하여 강력하고도 확장성 있는 디자인을 만들어 내는 방법을 제시해 준다. 이것은 템플릿과 패턴을 결합하는 전혀 새로운 접근법이다. 그 동안은 불가능하다고 여겨져 왔지만, 이제 이 책으로 이러한 방법들이 가능해 졌다! 만일 당신의 직업이 C++을 이용하여 디자인을 하거나 코딩을 하는 분야의 것이라면, 꼭 이 책을 읽어보기 바란다. 강추! - Herb Sutter

C++에 대해 지금까지 논의된 것 외에 더 남아있는 내용이 있을까? 물론 그렇다. 그것도 아주 많이... 이제 이 책을 통해 그것이 드러난다. - John Vlissides의 추천 서문에서 발췌

Part 1 테크닉

Chapter 1 단위전략 기반의 클래스 디자인
1.1 소프트웨어 디자인의 다양성
1.2 Do-It-All 인터페이스의 문제점
1.3 다중 상속이 해결책이 될 수 있을까요?
1.4 템플릿의 이점
1.5 단위전략과 단위전략 클래스
1.5.1 템플릿 템플릿 인자를 통한 단위전략 클래스의 구현
1.5.2 템플릿 멤버 함수를 통한 단위전략 클래스의 구현
1.6 단위전략 인터페이스의 보강
1.7 단위전략 클래스의 소멸자
1.8 불완전한 구체화를 통한 부가기능
1.9 단위전략 클래스 간의 조합
1.10 단위전략 클래스를 통한 커스터마이징
1.11 호환/비호환 단위전략
1.12 클래스를 단위전략으로 분리해 내기
1.13 요약

Chapter 2 테크닉
2.1 컴파일 타임 어써션
2.2 템플릿의 부분 특화
2.3 로컬 클래스
2.4 상수 값에서 자료형으로의 변환
2.5 자료형에서 다른 자료형으로의 매핑
2.6 자료형의 선택
2.7 형변환과 상속 가능의 여부를 컴파일 타임에 알아내는 방법
2.8 type_info에 대한 포장 클래스
2.9 NullType과 EmptyType
2.10 Traits 자료형
2.10.1 포인터 Traits의 구현
2.10.2 기본 자료형에 대한 판별
2.10.3 인자의 자료형에 대한 최적화
2.10.4 한정자 제거하기
2.10.5 TypeTraits의 사용
2.10.6 TypeTraits의 완전한 포장
2.11 요약

Chapter 3 Typelists
3.1 Typelist의 필요성
3.2 Typelist의 정의
3.3 Typelist 생성의 선형화
3.4 길이의 계산
3.5 중간 첨언
3.6 Index에 의한 접근
3.7 Typelist에 대한 탐색
3.8 Typelist에 자료형 또는 Typelist 추가하기
3.9 Typelist에서 특정 자료형을 제거하기
3.10 중복 자료형의 삭제
3.11 Typelist의 한 원소를 다른 자료형으로 바꾸기
3.12 부분적으로 정렬된 Typelist
3.13 Typelist를 통한 클래스 생성
3.13.1 비선형 계층 구조의 생성
3.13.2 Tuple의 생성
3.13.3 선형 계층 구조의 생성
3.14 요약
3.15 Typelist Quick Facts

Chapter 4 작은 객체에 대한 메모리 할당
4.1 C++가 제공하는 기본 할당기
4.2 메모리 할당기가 하는 작업
4.3 작은 객체에 대한 메모리 할당기
4.4 Chunk
4.5 FixedAllocator
4.6 SmallObjAllocator 클래스
4.7 컴파일러의 해트 트릭
4.8 간단하게, 또 복잡하게, 그러나 결국에는 간단하게...
4.9 활용 방안
4.10 요약
4.11 작은 객체에 대한 할당기 Quick Facts

Part 2 컴포넌트

Chapter 5 일반화 함수자
5.1 Command 디자인 패턴
5.2 실질 세계의 Command
5.3 C++의 호출 가능 객체들
5.4 Functor 클래스 템플릿의 뼈대
5.5 전달 함수 Functor::operator()의 구현
5.6 함수자 다루기
5.7 하나를 구성하고, 다른 하나는 공짜로 얻어내기
5.8 인자와 반환 값의 형변환
5.9 멤버 함수에 대한 포인터 다루기
5.10 바인딩
5.11 요청 작업의 체인화
5.12 실제 적용 시의 문제 1: 전달 함수가 갖는 부하
5.13 실제 적용 시의 문제 2: Heap 영역에서의 할당
5.14 Functor를 통한 Undo와 Redo의 구현
5.15 요약
5.16 Functor Quick Facts

Chapter 6 싱글톤의 구현
6.1 Static 데이터 + Static 함수 ! = 싱글톤
6.2 싱글톤의 지원을 위한 기본적인 C++ 기법
6.3 Singleton 객체의 유일성 보장
6.4 Singleton의 파괴
6.5 참조 무효화 현상
6.6 참조 무효화 현상에 대한 해법 (1): Phoenix 싱글톤
6.6.1 atexit 함수의 문제
6.7 참조 무효화 현상에 대한 해법 (2): 수명 제어 Singleton
6.8 수명 제어 Singleton의 구현
6.9 다중 스레드의 세계 속에서...
6.9.1 이중 검사 동기화 패턴
6.10 통합
6.10.1 SingletonHolder를 단위전략으로 쪼개기
6.10.2 SingletonHolder의 단위전략에 대한 요구 사항의 정의
6.10.3 SingletonHolder의 조립
6.10.4 Stock 단위전략의 구현
6.11 SingletonHolder로 작업하기
6.12 요약
6.13 SingletonHodler 클래스 템플릿 Quick Facts

Chapter 7 스마트 포인터
7.1 스마트 포인터 첫걸음
7.2 대가
7.3 스마트 포인터의 저장 구조
7.4 스마트 포인터 멤버 함수
7.5 소유권 관리 전략
7.5.1 완전 복사(Deep Copy)
7.5.2 Copy on Write(COW)
7.5.3 참조 카운팅
7.5.4 참조 연결 리스트
7.5.5 파괴 복사
7.6 주소 추출 연산자
7.7 원시 포인터 자료형으로의 암묵적 형변환
7.8 동치 조건과 부등 조건
7.9 대소 비교
7.10 오류 검사 및 보고
7.10.1 초기화 검사
7.10.2 객체 접근 전 검사
7.10.3 오류 보고
7.11 상수 객체에 대한 스마트 포인터와 상수 스마트 포인터
7.12 배열
7.13 스마트 포인터와 다중 스레딩
7.13.1 포인팅 받는 객체 레벨에서의 다중 스레딩
7.13.2 부가 데이터 수준에서의 다중 스레딩
7.14 통합 정리
7.14.1 Storage 단위전략
7.14.2 Ownership 단위전략
7.14.3 Conversion 단위전략
7.14.4 Checking 단위전략
7.15 요약
7.16. 스마트 포인터 Quick Facts

Chapter 8 객체 팩토리
8.1 객체 팩토리의 필요성
8.2 C++에서의 객체 팩토리: 클래스와 객체
8.3 객체 팩토리의 구현
8.4 타입 식별자
8.5 일반화
8.6 참고 사항
8.7 복제 팩토리
8.8 객체 팩토리와 다른 제네릭 컴포넌트와의 활용
8.9 요약
8.10 Factory 클래스 템플릿 Quick Facts
8.11 CloneFactory 클래스 템플릿 Quick Facts

Chapter 9 추상 팩토리
9.1 추상 팩토리의 구조적 역할
9.2 제네릭한 스타일의 추상 팩토리 인터페이스
9.3 AbstractFactory의 구현
9.4 프로토타입에 기반한 추상 팩토리의 구현
9.5 요약
9.6 AbstractFactor 및 ConcreteFactory에 대한 Quick Facts

Chapter 10 비지터
10.1 비지터의 기초
10.2 오버로딩과 깔때기 함수
10.3 구현 코드의 정련: 비순환 비지터
10.4. 비지터의 일반화된 구현
10.5 순환 비지터에 대한 재고찰
10.6 변형 버전에 대한 지원
10.6.1 깔때기 함수
10.6.2 융통성 있는 비지터
10.7 요약
10.8 비지터 제네릭 컴포넌트 Quick Facts

Chapter 11 멀티 메소드
11.1 멀티 메소드란 무엇일까요?
11.2 멀티 메소드가 필요한 경우는 언제일까요?
11.3 이중 자료형 스위치: Brute Force
11.4 자동화된 Brute-Force 접근법
11.5 Brute-Force 디스패치 엔진과의 대칭성
11.6 로그 시간의 이중 디스패치 엔진
11.6.1 로그 시간의 디스패치 엔진과 상속
11.6.2 로그 시간의 디스패치 엔진과 형변환
11.7 FnDispatcher와 대칭성
11.8 함수자에 대한 이중 디스패치 엔진
11.9 인자의 형변환: static_cast인가, dynamic_cast인가?
11.10 상수 시간에 동작하는 멀티 메소드: 오직 속도
11.11 단위전략으로서의 BasicDispatcher와 BasicFastDispatcher
11.12 앞으로의 전망
11.13 요약
11.14 이중 디스패치 엔진 Quick Facts

부록 최소의 다중 스레드 라이브러리
A.1 다중 스레딩 평론
A.2 Loki의 접근법
A.3 정수 자료형에 대한 단위 연산
A.4 뮤텍스
A.5 객체지향 프로그래밍에서의 동기화
A.6 선택적인 volatile 한정자
A.7 세마포어, 이벤트 그리고 기타 등등
A.8 요약

참고 목록
찾아보기
Andrei Alexandrescu
Andrei Alexandrescu는 RealNetworks 사의 개발 매니저이다. C/C++ 사용자 저널의 컬럼니스트이자, C++ 레포트의 전 컬럼니스트인 그의 혁신적인 성과는 그에게 이 분야에서의 선구자라는 명성을 가져다주었다. Andrei의 기술적 관심사는 프로그래밍 언어와 소프트웨어 재활용, 그리고 데이터 압축에 관한 것이다.

[역자의 글]
프로그램을 작성한다는 것은 달리 말하면 '논리의 성'을 쌓는 작업이라고 말할 수 있습니다. 그리고 그 성의 재료가 되는 '논리'라는 것은 당연히 전적으로 프로그래머의 역량에 따라 질의 높음과 낮음이 구분될 수 있을 것입니다. 또한 언어가 발전되어 감에 따라 그 논리의 체계 역시 점점 더 발전되어 온 것이 사실입니다. 하지만 그러한 발전에도 불구하고, 저는 그저 오래된 벽돌을 가지고 부실한 성을 쌓아 왔던 것은 아닌가 하는 자성의 목소리를 떨쳐 버릴 수 없었습니다.

그러던 중 {Modern C++ Design}은 저에게 그야말로 새롭고 신선한 충격을 안겨 주었습니다. 물론, 여기에서 사용하고 있는 제네릭 프로그래밍이나 여러 가지 디자인 패턴들이 완전히 새로운 개념인 것은 아닙니다. 하지만, 저자 Andrei Alexandrescu가 쌓아 놓은 논리의 체계는 그동안 접해왔던 그 어떤 코드들보다 더 제네릭하며, 편리하고, 또 튼튼합니다. 게다가, 그가 제공하고 있는 Loki 라이브러리는 확장성에 있어서도 전혀 부족함이 없습니다.

물론 이 책은 C++로 구사할 수 있는 고급 테크닉들을 다루고 있습니다. 그리고 이 책을 이해하기 위한 선행 지식의 예를 들면, STL 및 제네릭 프로그래밍 그리고 디자인 패턴이라 말할 수 있을 것입니다. 하지만 너무 겁내실 필요는 없습니다. 이 책은 여러분에게 이런 주제들에 대한 완전한 이해를 요구하지는 않습니다. 독자 여러분은 STL, 제네릭 프로그래밍 그리고 디자인 패턴에 대한 개념적인 이해만을 가지고도 이 책의 내용을 커다란 어려움 없이 따라갈 수 있을 것입니다(다만 한 가지, 템플릿에 익숙해지는 과정은 감수해야 합니다).

또한 가장 멋진 일은, 이 책을 읽은 후에 여러분이 가질 수 있는 것이 비단 '향상된 실력'만이 아니라는 점입니다. 저자 Alexandrescu는 이 책에서 자신이 설명하고 있는 모든 내용을 Loki라는 라이브러리에 집약시켜 놓았습니다. 여러분은 웹 상에서 자유롭게 이 라이브러리를 다운로드 받으실 수 있으며, 아무런 제한 없이 이것을 사용할 수 있을 것입니다. 즉, 여러분은 향상된 실력과 함께 제네릭한 스타일로 응용할 수 있는 매우 강력한 라이브러리를 가지게 되는 것입니다.


[감수의 글]
{Modern C++ Design}은 C++의 템플릿 기능을 사용하여 재사용성과 효율성을 동시에 갖춘 컴포넌트를 설계하고 프로그래밍하는 방법을 정리해 놓은 책으로서, 필자 자신이 개발한 Loki라는 C++ 프로그래밍 툴을 설명하는 식으로 진행되어 있다. 개인적으로 C++ In Depth 시리즈로 나온 책 중에 가장 독특하고 감동적인 책이라고 생각한다. C++의 기능을 최대한 활용한 컴포넌트 클래스 설계, 프로그래밍 테크닉, C++에 최적화한 디자인 패턴 적용 방법이 500페이지에 걸쳐서 기술되어 있다. 이 책을 보고 있노라면 '이만하면 나도…'라고 생각해 오며 자기 혼자 우쭐해 있던 모습이 소리없이 작아지는 것을 느낄 수 있을 것이다. C++의 언어적 특징과 템플릿 기능에 대한 저자의 완벽한 이해를 바탕으로 풀어 헤쳐지는 중·고난도 테크닉을 한국의 많은 개발자들도 전수받길 바란다. 원서의 자세한 리뷰는 감수자의 홈페이지(www.kwak101.pe.kr)에서 확인할 수 있다. 한편, 이 책의 한국어판 작업은 "블루버드 메신저"로 유명한 블루버드 소프트웨어의 팀장으로 있었던 이기형씨가 맡아 주셨다

시작부터 원고의 완성도가 매우 높고 깔끔했기 때문에, 독자들로부터 좋은 반응을 얻으리라 생각된다.
정도가 아닌 사도를 걷는 느낌
공봉식님이 쓰신 서평보기 I 평점 I 조회수(1384) I 공감 (0) I 블로그
이 책은 굉장히 난해한 책입니다.책에 등장하는 예제들이 모두 한번 봐서는 이해가 되지 않는 코드들로 되어있습니다. 사실 기존 관점에서는 코드라고 부르기도 힘듭니다. 제 느낌으로는 마치 사파의 길을 열심히 걸은 무림의 초절정 악당 고수가 내지른 초식 같아 보입니다. template 의 유용성은 저 역시 공감합니다. 특히 STL 을 많이 쓰는 요즘에는 참 템플릿은 고마운 존재이구나 하는 생각도 듭니다. 또, 머릿속에만 머물던 상상을 실체화 시켜주는 마술 상자 같은 존재...
괜찮은 책
송재운님이 쓰신 서평보기 I 평점 I 조회수(1002) I 공감 (0) I 블로그
정말 괜찮은 책이다. c++ in-Depth 시리즈 중에서가장 읽기 어렵고 재미있는 책인거 같다. 템플릿을 이용한데이타 구조의 일반화 프로그래밍에 대해선가장 잘 다룬 책인거 같다. 
디자인 패턴과 Generic Programming의 조화
임은천님이 쓰신 서평보기 I 평점 I 조회수(1905) I 공감 (0) I 블로그
이 책을 처음 보게 되었을 때의 느낌은 어렵겠다. 라는 생각이었다. 사실 저번에 읽었던 boost library Metaprogramming도 꽤나 높은 수준의 서적이었기 때문이다. 이번 서적도 예상과 마찬가지로 일반적인 C++ 초보 서적과는 거리가 멀었다. 이 책의 저자 역시 라이브러리 개발까지도 욕심을 부릴만한 실력까지를 목표로 하고 있기 때문이다. 특히 이 내용은 구현과 설계까지 다루고 있기 때문에 부가적으로 Generic Programming에 적용된 Design Pattern까지 배울 수 있는 드물게...
좋아요~!
이랑혁님이 쓰신 서평보기 I 평점 I 조회수(888) I 공감 (0) I 블로그
C++프로그래머라면 꼭 보세요.강추 입니다. 
정말 멋진 책입니다
서진택님이 쓰신 서평보기 I 평점 I 조회수(992) I 공감 (0) I 블로그
C++에 대해서는 많이 알고 있다고 생각하고 있던 자신의 생각을 확 깨버린 책이었습니다. Policy 기반 디자인이나 type Traits등은 알고나면 도저시 사용하지 않을 수 없는 멋진기능들입니다.또한 알려진 디자인 패턴등을 template을 사용하여 구현한 generic programming 기술은정말 멋집니다. 저는 Alexandrescu가 구현한 Loki라이브러리를 모든 프로젝트에 공통으로사용하고 있습니다..net에서 컴파일 되는 버전은 sourceforce에서 구할 수 있습니다.
템플릿의 극한...
김완님이 쓰신 서평보기 I 평점 I 조회수(1104) I 공감 (0) I 블로그
STL, Template, 디자인패턴 등을 충분히 알고 읽지 않는다면상당히 고전할것이 분명한 책이라는 생각이 듭니다. 제네릭 프로그래밍이라는 말처럼 어디에든 적용가능한 템플릿 객체들에 대한 설명을 많이 해줍니다. 코드자체를 코드로 만들어낸다고 할까?그런 느낌이 들만큼 난해한 면이 있습니다.즉 템플릿에 대한 정확한 이해가 따르지 않으면쉽지 않다는 얘기지요. 한마디로 줄이자면 템플릿의 극한이라고 말 할 수 있습니다. 내공이 딸려서 인지 아직 몇번은 다...
읔..이거 구현이나 사용시 꼭 정오표 보시기 바랍니다
안기찬님이 쓰신 서평보기 I 평점 I 조회수(1151) I 공감 (0) I 블로그
나온지 꽤 됐는데도 오류가 있군요.  책의 샘플 코드에 오류가 있다면 따로 샘플 CD도 없는데.. 어떡하라구..   8054-517-ox.hwp
신기하고 재미있는 책.
박정욱님이 쓰신 서평보기 I 평점 I 조회수(1089) I 공감 (0) I 블로그
읽기 시작한 지는 한참 되었는데, 서평은 이제서야 쓰게 되네요.좀처럼 이해하기 어려운 내용들이 많이 나오기 때문에, 다 읽는데 상당한 시간이 걸렸지만,읽는 내내 즐거운 책이었습니다.알고리즘 책을 보다가 "아! 이런 멋진 방법도 있다니."하면서 감탄하던 바로 그 느낌을이 책에서도 느낄 수 있었습니다.템플릿을 이렇게까지 사용할 수 있다니! 이런 멋진 방법을 쓸 수 있다니! 하는 생각을 계속 하게 되었지요.물론, 언어 자체에서 지원되는게 더 나은 기능을 이런 독특한 방법을...
기초가 튼튼한 사람만 보세요
이상범님이 쓰신 서평보기 I 평점 I 조회수(1302) I 공감 (0) I 블로그
책을 반정도 본듯합니다..애석하게두 초보자나 중급자가 볼 책은 아닌듯 하내요...독자를 무시해서 그러는게 아니라...STL이나.. 기본적으로 패턴책을 본 후에 봐야..어느정도 이해가 가는 책이군요...패턴을 위주로해서 프로그래밍 할 필요는 없지만...관심 있는 분은 봐도 될 듯 합니다..참고로 이책번역한분 고생좀 했겠내요...번역 수준은 그리 만족 할 많한 내용은 아니구요..^^
한단계 높은 세상을 위해서..
문정환님이 쓰신 서평보기 I 평점 I 조회수(2095) I 공감 (0) I 블로그
먼저 이 서평은 원서를 바탕으로 작성되었음을 알려드립니다. 그러나 거의 1년이라는 번역기간에 부응하듯, 번역서의 미리보기 PDF를 살펴보시면 이 시대 최고의 번역서 중 하나라고 말할 수 있을 거 같습니다. 유치하게 오타 이런 것의 문제가 아닙니다. Alexandrescu의 생각과, 우리에게 전하고 싶었던 진정한 의미를 정말로 우리의 눈앞에 펼쳐보이고 있습니다. 실제로 1장을 보면 다중상속이 왜 해결책이 될 수가 없는지에 대해서 지금까지의 그 어떠한 책보다도 깊이 있고 명쾌하...
SQL 전문가 가이드 [The Guide for SQL Professional](2013 Edition)...
한국데이터베이스진흥원
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
명품 C언어 프로젝트...
안기수
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
명품 JAVA Programming...
황기태, 김효수
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
 
전체평균(60)
회원평점   회원서평수 10
정도가 아닌 사도를 걷는 느낌
공봉식 님  2007-08-31
괜찮은 책
송재운 님  2007-08-31
디자인 패턴과 Generic Programming의 조화
임은천 님  2006-08-28
좋아요~!
이랑혁 님  2006-03-09
정말 멋진 책입니다
서진택 님  2005-11-14
템플릿의 극한...
김완 님  2005-10-25
읔..이거 구현이나 사용시 꼭 정오표 보시기 바랍니다
안기찬 님  2004-09-18
신기하고 재미있는 책.
박정욱 님  2003-11-15
기초가 튼튼한 사람만 보세요
이상범 님  2003-08-15
한단계 높은 세상을 위해서..
문정환 님  2003-07-30
Andrei Alexandrescu 의 최근 저서
 
Programming in D: Tutorial and Reference
49,600원
(15%↓+1%)
 
Programming in D: Tutorial and Reference
44,100원
(15%↓+1%)
 
D 프로그래밍언어
32,010원
(3%↓+1%)
 
C++ Coding Standards: Rules, Guidelines, and Best Practices
73,600원
(16%↓+1%)
 
인포북 출판사의 신간
(노무현의)외로운 전쟁
김용한 저
9,900원
(10%↓+5%)
 
(요리 톱스타 보라돌이맘의)집밥 365일
박미경 저
10,800원
(10%↓+5%)
 
청춘남미
차유진 저
11,700원
(10%↓+5%)
 
매혹적인 C++ : 객체지향 세계로의 첫 걸음
Walter Savitch/이병준 저
27,000원
(10%↓+5%)
 
버그 패턴과 자바
Eric Allen/천영환 저
13,500원
(10%↓+5%)
 
이메일주소수집거부