책 소개C++ Programming 잘하기!
훌륭한 programmer가 되기 위해서는 C++ programming을 마음대로 할 수 있어야 한다. C++ 언어는 C 언어처럼 공부하면 제대로 구사하기가 어렵다. C++ 언어는 객체 지향 개념을 확실하게 갖고 있어야 하며 이러한 객체 지향 개념은 자료구조의 추상화 개념과 밀접하게 관련이 있다. 그래서 이 책은 자료구조를 공부하기 위해 꼭 알아야 하는 객체 지향 programming 개념과 skill을 실습으로 혼자서 쌓을 수 있도록 작성하였다. C++ 언어를 사용한 객체 지향 설계가 왜 중요하고 객체 지향 programming이 어떤 의미인지를 실습을 통하여 터득할 수 있도록 하였다.
이 책은 C++ 언어의 객체 지향 programming에 관한 전반적인 내용을 모두 다루고 있다. 진정한 객체 지향 C++ code를 만들기 위한 programming 개념으로서 추상화, polymorphism template, class 계층 등에 대하여 집중적으로 다루고 있다. 기존 C++ 책과 다른 점은 다음과 같다:
- 각 장에서 소개된 예제 program을 실습할 수 있도록 부록에서 project file의 import 실행단계를 설명하였다. - 실습 예제 program은 실습 대상 항목을 설명하고 주석으로 표시된 부분을 해제하고 실행시켜 볼 수 있도록 하였다. - 예제 program과 실습 program을 토대로 각 장마다 programming project를 기술하였다. - 연습 문제는 대학에서 중간고사, 기말고사로 출제한 문제를 중심으로 편집하였다.
|
저자소개홍 봉 희(homepage:dblab.pusan.ac.kr) 현 부산대학교 컴퓨터공학과 교수 ∙ 1982년 서울대학교 컴퓨터공학과 졸업(공학사) ∙ 1984년 서울대학교 대학원 컴퓨터공학과 졸업(공학석사) ∙ 1988년 서울대학교 대학원 컴퓨터공학과 졸업(공학박사) ∙ 1987년부터 현재까지 : 부산대학교 컴퓨터공학과에서 C++ programming, 자료구조, file구조, 데이터베이스 강의 ∙ 2004년 부터 2012년까지 부산대학교 차세대물류기술연구사업단 단장 ∙ 2012년 부터 2016년까지 부산대학교 빅데이터 처리 platform 연구센터 센터장 ∙ 2016년 부터 사단법인 글로벌 핀테크산업 진흥센터 이사장 ∙ 2017년 한국정보과학회 회장
|
목차01 C++ 공부는?
1.1 어릴 때 갖고 놀던 lego block들로 다양한 구조물을 만들듯이 1.2 C++를 공부하기 위해서는? 1.3 객체 지향 programming 과정 1.4 객체지향 program 설계가 중요한 이유
02 C++ 공부에 필요한 c 언어 중요 요소
2.1 pointer와 배열 2.1.1 pointer란 무엇인가? 2.1.2 Pointer 변수의 연산 2.1.3 1차원 배열과 Pointer 변수 2.1.4 2차원 배열과 Pointer 변수 2.2 함수 2.2.1 함수 선언과 정의 2.2.2 함수 Parameter 전달 2.2.3 Pointer를 Return하는 함수 2.2.4 함수 Pointer 2.3 메모리 2.3.1 메모리 구조 2.3.2 동적 할당 2.3.3 Pointer 배열: Ragged 배열 2.4 문자열 2.4.1 문자열 (string) 2.4.2 문자열 초기화 2.4.3 문자열과 pointer 연산자 2.4.4 문자열의 입력 2.4.5 문자열의 배열 2.4.6 문자열 복사와 비교 2.5 C의 Enum, Structure와 Union 2.6 C 언어의 File 입출력 2.6.1 UNIX system calls 2.6.2 표준 입출력 library 함수 programming 과제 연습문제
03 객체 지향 programming과 C++ 언어 103
3.1 소프트웨어 위기 3.2 객체 지향 설계 3.2.1 Program의 설계 방법론 3.2.2 연산 추상화 3.2.3 데이터 추상화 3.2.4 추상 데이터 타입 3.2.5 객체 지향 설계 3.3 객체 지향 언어의 중요 개념들 3.3.1 class와 객체(object or instance) 3.3.2 상속 3.3.3 Polymorphism 3.4 C++ 언어 3.4.1 C++언어의 역사 3.4.2 일반적인 특징들 3.4.3 객체 지향 Programming을 위한 구성 요소 programming 과제 연습문제
04 C++ 언어의 요소들
4.1 변수 scope와 표준 입출력 4.2 상수 선언 4.2.1 상수 변수 선언 4.2.2 상수 pointer 선언 4.3 pointer 변수와 reference 변수 4.4 C++ 함수 parameter 전달 4.4.1 C++ 함수 선언과 정의 4.4.2 함수 parameter와 arguments 4.4.3 reference에 의한 함수 parameter 전달 4.4.4 reference에 의한 함수 return값 4.5 타입 변환 4.5.1 const_cast 4.5.2 dynamic_cast 4.5.3 reinterpret_cast 4.5.4 static_cast 4.6 inline 함수 4.7 C++ file 입출력 4.8 전처리기 directives 4.8.1 C++에서 macro 대치 programming 과제 연습문제
05 추상 데이터 타입, class, 객체
5.1 현실 세계의 추상 모델(abstract model) 5.1.1 추상 모델 Queue와 구현 5.1.2 추상 모델 Stack과 구현 5.2 class와 객체의 개념 5.3 Class 5.3.1 생성자(constructor)와 소멸자(destructor) 5.3.2 Private, Protected, 그리고 Public 5.3.3 class의 interface와 body 5.3.4 this pointer 5.3.5 객체를 생성하고 사용하는 방법 5.4 C++ class와 추상 데이터 타입 5.4.1 C++에서 데이터 추상화와 Encapsulation 5.4.2 class 객체의 선언과 member 함수의 호출 5.4.3 default 생성자와 소멸자 5.5 class 데이터와 class 함수 5.6 class queue 5.7 class를 선택하는 방법 programming 과제 연습문제
06 함수와 객체 지향 programming
6.1 함수와 member 함수 6.2 함수와 programming style 6.3 const member 함수 6.3.1 상수 함수와 상수 argument 6.4 side effect, aliasing, dangling 참조 6.4.1 side effect 6.4.2 aliasing 6.4.3 dangling 참조 6.5 함수 Overloading 6.5.1 overloading 함수 호출 결정 6.6 연산자 overloading 6.6.1 객체들 간의 비교 연산자 > 6.6.2 연산자 overloading에 대한 의견 6.6.3 ++ 연산자의 overloading 6.6.4 치환 연산자의 overloading 6.6.5 변환 연산자 6.6.6 기타 연산자 overloading 6.7 복사 생성자 (Copy Constructor) 6.7.1 복사 생성자는 언제 호출되나? 6.7.2 pointer가 사용된 class에서의 복사 생성자 6.7.3 복사 생성자(Copy Constructor)와 치환문의 차이 6.7.4 ANSI String class 6.8 Friends 6.9 입출력 연산자 overloading programming 과제 연습문제
07 상속
7.1 상속의 첫 예제 7.2 상속의 두 가지 전형적인 예제 7.2.1 정사각형(square)과 직사각형(rectangle) 7.2.2 color 직사각형 7.3 상속의 이점 7.4 상속받은 데이터 member에 접근 7.5 Public, Private 그리고 Protected 상속 7.6 다중 상속의 예 7.7 다중 상속에 대한 몇 가지 관찰 7.8 virtual base class와 반복 상속 7.9 상속 관계와 client 관계 7.10 다중 상속의 좋은 예 7.11 base class의 초기화 순서 7.12 C++의 상속과 다른 언어의 비교 programming 과제 연습문제
08 Polymorphism과 동적 binding
8.1 타입 호환성 규칙 (Type Compatibility Rules) 8.2 동적 Binding의 소개 8.3 Polymorphism 8.4 정적 binding과 동적 binding 8.5 virtual 함수 8.6 virtual 함수와 동적 binding의 사용 예 8.7 polymorphism의 이점 8.8 유도된 class의 상세화 (specialization) 8.9 상속과 virtual을 사용한 container class의 정의 8.10 이질적인 데이터 구조 programming 과제 연습문제
09 class 계층과 추상 class
9.1 class 계층의 설계 9.2 class의 일반화 9.3 pure virtual 함수 9.4 추상 class 9.5 어떤 class가 추상 class인가? 9.6 virtual 소멸자 programming 과제 연습문제
10 Genericity와 Template
10.1 Genericity의 개념 10.2 macro로 genericity를 표현 10.3 상속과 polymorphism을 사용하여 genericity 표현 10.4 template class 10.4.1 타입 호환성 문제 10.4.2 template argument 10.4.3 template을 이용한 Container class 표현 10.5 template 함수 10.5.1 RunSpeaking 함수의 재검토 10.5.2 function template에 의한 generic programming 10.6 template과 polymorphism 10.6.1 genericity 대 상속 programming 과제 연습문제
11 예외 처리
11.1 예외(Exception)의 기본 개념 11.2 객체의 throw와 타입 catch 11.2.1 Throw 문 11.2.2 Catch 문 11.3 예외 처리와 교정 11.4 stack unwinding 11.5 생성자의 중지(aborting a constructor) 11.6 예외 class의 계층 구조 11.7 new를 사용한 메모리 할당 programming 과제 연습문제
12 부록1. project file 열기 (import)
12.1 C++ project file import 12.2 C++ source code 실행하기(Compile)
13 부록2. Debugging 기법
13.1 Dedug의 유래 13.2 VC++에서의 debugging 13.3 VC++ debugging 예제
14 부록3. C++ 연산자 및 Keyword
14.1 C++ 연산자표 14.2 연산자 우선순위표 14.3 keyword 설명표
참고문헌 찾아보기
|
SW 코딩 역량을 위한 C++ 프로그래밍
지은이 : 홍봉희
ISBN : 978-89-353-0535-3
금액 : 35,000원
● 발행날짜 : 2017년 3월 10일
● 페이지 : 692페이지
● 판매처 : 온라인 서점
● 강의자료 준비중
책 소개
책 소개
C++ Programming 잘하기!훌륭한 programmer가 되기 위해서는 C++ programming을 마음대로 할 수 있어야 한다. C++ 언어는 C 언어처럼 공부하면 제대로 구사하기가 어렵다. C++ 언어는 객체 지향 개념을 확실하게 갖고 있어야 하며 이러한 객체 지향 개념은 자료구조의 추상화 개념과 밀접하게 관련이 있다. 그래서 이 책은 자료구조를 공부하기 위해 꼭 알아야 하는 객체 지향 programming 개념과 skill을 실습으로 혼자서 쌓을 수 있도록 작성하였다. C++ 언어를 사용한 객체 지향 설계가 왜 중요하고 객체 지향 programming이 어떤 의미인지를 실습을 통하여 터득할 수 있도록 하였다.
이 책은 C++ 언어의 객체 지향 programming에 관한 전반적인 내용을 모두 다루고 있다. 진정한 객체 지향 C++ code를 만들기 위한 programming 개념으로서 추상화, polymorphism template, class 계층 등에 대하여 집중적으로 다루고 있다.
기존 C++ 책과 다른 점은 다음과 같다:
- 각 장에서 소개된 예제 program을 실습할 수 있도록 부록에서 project file의 import 실행단계를 설명하였다.
- 실습 예제 program은 실습 대상 항목을 설명하고 주석으로 표시된 부분을 해제하고 실행시켜 볼 수 있도록 하였다.
- 예제 program과 실습 program을 토대로 각 장마다 programming project를 기술하였다.
- 연습 문제는 대학에서 중간고사, 기말고사로 출제한 문제를 중심으로 편집하였다.
저자소개
홍 봉 희(homepage:dblab.pusan.ac.kr)현 부산대학교 컴퓨터공학과 교수
∙ 1982년 서울대학교 컴퓨터공학과 졸업(공학사)
∙ 1984년 서울대학교 대학원 컴퓨터공학과 졸업(공학석사)
∙ 1988년 서울대학교 대학원 컴퓨터공학과 졸업(공학박사)
∙ 1987년부터 현재까지 : 부산대학교 컴퓨터공학과에서 C++ programming, 자료구조, file구조, 데이터베이스 강의
∙ 2004년 부터 2012년까지 부산대학교 차세대물류기술연구사업단 단장
∙ 2012년 부터 2016년까지 부산대학교 빅데이터 처리 platform 연구센터 센터장
∙ 2016년 부터 사단법인 글로벌 핀테크산업 진흥센터 이사장
∙ 2017년 한국정보과학회 회장
목차
01 C++ 공부는?1.1 어릴 때 갖고 놀던 lego block들로 다양한 구조물을 만들듯이
1.2 C++를 공부하기 위해서는?
1.3 객체 지향 programming 과정
1.4 객체지향 program 설계가 중요한 이유
02 C++ 공부에 필요한 c 언어 중요 요소
2.1 pointer와 배열
2.1.1 pointer란 무엇인가?
2.1.2 Pointer 변수의 연산
2.1.3 1차원 배열과 Pointer 변수
2.1.4 2차원 배열과 Pointer 변수
2.2 함수
2.2.1 함수 선언과 정의
2.2.2 함수 Parameter 전달
2.2.3 Pointer를 Return하는 함수
2.2.4 함수 Pointer
2.3 메모리
2.3.1 메모리 구조
2.3.2 동적 할당
2.3.3 Pointer 배열: Ragged 배열
2.4 문자열
2.4.1 문자열 (string)
2.4.2 문자열 초기화
2.4.3 문자열과 pointer 연산자
2.4.4 문자열의 입력
2.4.5 문자열의 배열
2.4.6 문자열 복사와 비교
2.5 C의 Enum, Structure와 Union
2.6 C 언어의 File 입출력
2.6.1 UNIX system calls
2.6.2 표준 입출력 library 함수
programming 과제
연습문제
03 객체 지향 programming과 C++ 언어 103
3.1 소프트웨어 위기
3.2 객체 지향 설계
3.2.1 Program의 설계 방법론
3.2.2 연산 추상화
3.2.3 데이터 추상화
3.2.4 추상 데이터 타입
3.2.5 객체 지향 설계
3.3 객체 지향 언어의 중요 개념들
3.3.1 class와 객체(object or instance)
3.3.2 상속
3.3.3 Polymorphism
3.4 C++ 언어
3.4.1 C++언어의 역사
3.4.2 일반적인 특징들
3.4.3 객체 지향 Programming을 위한 구성 요소
programming 과제
연습문제
04 C++ 언어의 요소들
4.1 변수 scope와 표준 입출력
4.2 상수 선언
4.2.1 상수 변수 선언
4.2.2 상수 pointer 선언
4.3 pointer 변수와 reference 변수
4.4 C++ 함수 parameter 전달
4.4.1 C++ 함수 선언과 정의
4.4.2 함수 parameter와 arguments
4.4.3 reference에 의한 함수 parameter 전달
4.4.4 reference에 의한 함수 return값
4.5 타입 변환
4.5.1 const_cast
4.5.2 dynamic_cast
4.5.3 reinterpret_cast
4.5.4 static_cast
4.6 inline 함수
4.7 C++ file 입출력
4.8 전처리기 directives
4.8.1 C++에서 macro 대치
programming 과제
연습문제
05 추상 데이터 타입, class, 객체
5.1 현실 세계의 추상 모델(abstract model)
5.1.1 추상 모델 Queue와 구현
5.1.2 추상 모델 Stack과 구현
5.2 class와 객체의 개념
5.3 Class
5.3.1 생성자(constructor)와 소멸자(destructor)
5.3.2 Private, Protected, 그리고 Public
5.3.3 class의 interface와 body
5.3.4 this pointer
5.3.5 객체를 생성하고 사용하는 방법
5.4 C++ class와 추상 데이터 타입
5.4.1 C++에서 데이터 추상화와 Encapsulation
5.4.2 class 객체의 선언과 member 함수의 호출
5.4.3 default 생성자와 소멸자
5.5 class 데이터와 class 함수
5.6 class queue
5.7 class를 선택하는 방법
programming 과제
연습문제
06 함수와 객체 지향 programming
6.1 함수와 member 함수
6.2 함수와 programming style
6.3 const member 함수
6.3.1 상수 함수와 상수 argument
6.4 side effect, aliasing, dangling 참조
6.4.1 side effect
6.4.2 aliasing
6.4.3 dangling 참조
6.5 함수 Overloading
6.5.1 overloading 함수 호출 결정
6.6 연산자 overloading
6.6.1 객체들 간의 비교 연산자 >
6.6.2 연산자 overloading에 대한 의견
6.6.3 ++ 연산자의 overloading
6.6.4 치환 연산자의 overloading
6.6.5 변환 연산자
6.6.6 기타 연산자 overloading
6.7 복사 생성자 (Copy Constructor)
6.7.1 복사 생성자는 언제 호출되나?
6.7.2 pointer가 사용된 class에서의 복사 생성자
6.7.3 복사 생성자(Copy Constructor)와 치환문의 차이
6.7.4 ANSI String class
6.8 Friends
6.9 입출력 연산자 overloading
programming 과제
연습문제
07 상속
7.1 상속의 첫 예제
7.2 상속의 두 가지 전형적인 예제
7.2.1 정사각형(square)과 직사각형(rectangle)
7.2.2 color 직사각형
7.3 상속의 이점
7.4 상속받은 데이터 member에 접근
7.5 Public, Private 그리고 Protected 상속
7.6 다중 상속의 예
7.7 다중 상속에 대한 몇 가지 관찰
7.8 virtual base class와 반복 상속
7.9 상속 관계와 client 관계
7.10 다중 상속의 좋은 예
7.11 base class의 초기화 순서
7.12 C++의 상속과 다른 언어의 비교
programming 과제
연습문제
08 Polymorphism과 동적 binding
8.1 타입 호환성 규칙 (Type Compatibility Rules)
8.2 동적 Binding의 소개
8.3 Polymorphism
8.4 정적 binding과 동적 binding
8.5 virtual 함수
8.6 virtual 함수와 동적 binding의 사용 예
8.7 polymorphism의 이점
8.8 유도된 class의 상세화 (specialization)
8.9 상속과 virtual을 사용한 container class의 정의
8.10 이질적인 데이터 구조
programming 과제
연습문제
09 class 계층과 추상 class
9.1 class 계층의 설계
9.2 class의 일반화
9.3 pure virtual 함수
9.4 추상 class
9.5 어떤 class가 추상 class인가?
9.6 virtual 소멸자
programming 과제
연습문제
10 Genericity와 Template
10.1 Genericity의 개념
10.2 macro로 genericity를 표현
10.3 상속과 polymorphism을 사용하여 genericity 표현
10.4 template class
10.4.1 타입 호환성 문제
10.4.2 template argument
10.4.3 template을 이용한 Container class 표현
10.5 template 함수
10.5.1 RunSpeaking 함수의 재검토
10.5.2 function template에 의한 generic programming
10.6 template과 polymorphism
10.6.1 genericity 대 상속
programming 과제
연습문제
11 예외 처리
11.1 예외(Exception)의 기본 개념
11.2 객체의 throw와 타입 catch
11.2.1 Throw 문
11.2.2 Catch 문
11.3 예외 처리와 교정
11.4 stack unwinding
11.5 생성자의 중지(aborting a constructor)
11.6 예외 class의 계층 구조
11.7 new를 사용한 메모리 할당
programming 과제
연습문제
12 부록1. project file 열기 (import)
12.1 C++ project file import
12.2 C++ source code 실행하기(Compile)
13 부록2. Debugging 기법
13.1 Dedug의 유래
13.2 VC++에서의 debugging
13.3 VC++ debugging 예제
14 부록3. C++ 연산자 및 Keyword
14.1 C++ 연산자표
14.2 연산자 우선순위표
14.3 keyword 설명표
참고문헌
찾아보기