게임으로 배우는 C++

게임으로 배우는 C++

$38.98
Description
C++는 C언어의 기능을 확장하여 복잡하고 규모가 큰 프로그램을 효율적으로 개발할 목적으로 1980년대에 탄생한 언어이다. C언어의 문법을 그대로 지원하면서 객체지향 프로그래밍은 물론 일반화 프로그래밍 기법까지 지원하기 때문에 보다 쉽고 편리한 프로그래밍이 가능하다. 따라서 매우 중요하고 활용도가 높은 프로그래밍 언어이다.
저자

최영규

저자최영규는1989년경북대학교전자공학과공학사
1991년한국과학기술원전기및전자공학과공학석사
1995년한국과학기술원전기및전자공학과공학박사
1995~1999년LG산전연구소선임연구원
1999년~현재한국기술교육대학교컴퓨터공학부교수
2005,2012년미국조지워싱턴대,UTSA방문교수

목차

CHAPTER01C++기초
1.1C++개요
1.2객체지향프로그래밍
1.3프로그램개발과정
1.4프로그램개발전의준비사항
1.5C++프로그래밍따라하기
1.6소스코드분석
1.7프로그램의입력과출력
1.8응용:GameOver게임
요약
연습문제
실습문제

CHAPTER02프로그래밍기초
2.1프로그램의기본요소
2.2변수,상수,자료형
2.3수식과연산자
2.4분기와조건문
2.5반복문
2.6응용:근로소득세계산
2.7응용:시큰둥한게임
요약
연습문제
실습문제

CHAPTER03함수
3.1함수란?
3.2함수의정의와호출
3.3함수원형과재사용
3.4함수중복
3.5디폴트매개변수와인라인함수
3.6게임을위한라이브러리함수
3.7변수의가시범위와생존기간
3.8응용:조금살벌하고긴장감있는게임
요약
연습문제
실습문제

CHAPTER04배열,구조체와파일
4.1대용량자료의처리
4.2배열
4.3배열과함수
4.4구조체
4.5구조체와함수
4.6값에의한호출
4.7파일입출력
4.8응용:랭킹관리프로그램
4.9응용:4×4퍼즐게임
요약
연습문제
실습문제

CHAPTER05함수의진화
5.1포인터
5.2주소에의한호출
5.3참조형(referencetype)
5.4참조에의한호출
5.5심화학습:재귀함수
5.6심화응용:지뢰찾기게임
요약
연습문제
실습문제

CHAPTER06클래스:구조체의진화
6.1클래스:구조체의진화
6.2객체지향프로그래밍의주요특징
6.3클래스의선언과활용
6.4사례:Complex의다양한변신
6.5UML클래스다이어그램
6.6응용:기존게임의클래스변환
6.7C++표준라이브러리클래스
6.8응용:Hangman게임
요약
연습문제
실습문제

CHAPTER07객체의생성과소멸
7.1객체의생성과소멸을도와주는함수
7.2생성자
7.3멤버초기화리스트
7.4소멸자
7.5생성자와소멸자의호출순서
7.6객체의복사와복사생성자
7.7함수의설계와객체의복사
7.8응용:MonsterWorld
요약
연습문제
실습문제

CHAPTER08객체와포인터
8.1객체와포인터
8.2동적메모리할당과해제
8.3객체의얕은복사문제
8.4동적메모리와깊은복사
8.5this포인터
8.6정적멤버
8.7심화응용:2차원배열의동적할당
8.8응용:MonsterWorld2:조절되는세상
요약
연습문제
실습문제

CHAPTER09상속
9.1클래스의상속
9.2상속의방법과접근지정자
9.3상속에서의생성자와소멸자
9.5멤버의재정의
9.5응용:그래픽에디터
9.6다중상속
9.7응용:MonsterWorld3:세상의모든귀신
요약
연습문제
실습문제

CHAPTER10다형성
10.1다형성이란?
10.2응용:상호작용이가능한그래픽에디터
10.3상속에서의형변환
10.4가상함수와동적바인딩
10.5상속에서의객체크기
10.6가상소멸자
10.7응용:MonsterWorld4:실행시간다형성
10.8순수가상함수와추상클래스
10.9응용:MonsterWorld5:신인류의탄생
요약
연습문제
실습문제

CHAPTER11프렌드와연산자중복
11.1프렌드선언
11.2연산자중복
11.3연산자중복의종류
11.4특별한연산자중복
11.5깊은복사와연산자중복
11.6응용:MonsterWorld6:여유있는삶
요약
연습문제
실습문제

CHAPTER12예외처리와형변환
12.1예외처리란?
12.2C++의예외처리방법
12.3예외클래스를만들어사용하기
12.4예외의전달
12.5응용:MonsterWorld7:새로운경쟁의시작
12.6const지시자
12.7형변환
요약
연습문제
실습문제

CHAPTER13템플릿
13.1일반화프로그래밍
13.2함수템플릿
13.3클래스템플릿
13.4응용:벡터템플릿(심화학습)
13.5응용:MonsterWorld8:벡터로만든세상
요약
연습문제
실습문제

CHAPTER14표준템플릿라이브러리
14.1표준템플릿라이브러리
14.2STL의구성요소
14.3순차컨테이너
14.4컨테이너어댑터
14.5연관컨테이너
14.6STL알고리즘
14.7응용:MonsterWorld9:실시간순위갱신
요약
연습문제
실습문제

[부록]아스키코드표

출판사 서평

지금까지많은C++책들이출간되었는데,이들은대부분문법이나활용방법들을작은예제를통해설명하고있다.이들방법은단편적인문법의이해를도울수는있다.그러나실제문제를접했을때공부한기능들이잘생각나지않아문제해결에큰도움을주지못한다는것도사실이다.이책에서는다음과같이좀새로운방법을사용하였다.

-각장에서는먼저흥미를유발할수있는게임을학습목표로제시한다.이들은이어지는본문의내용들을잘이해하고활용한다면그렇게어렵지않게구현할수있는게임이다.특별한게임엔진이나그래픽라이브러리를사용하지는않으며콘솔응용프로그램게임이지만충분히흥미를가질만한것들이다.
-본문에서는C++의문법이나기능,프로그래밍기법등을핵심적인내용들만을뽑아최대한쉽게설명하고있다.특히본문의내용들이어떻게게임구현에활용될지를예상하면서공부하는것이중요하다.각장의뒷부분에는목표게임을구현하는과정과소스코드,코드에대한설명과고찰등이제공된다.특히본문에서공부한내용들이어떻게사용되는지를강조하려고하였다.
-7~14장에서는“몬스터월드”란하나의게임주제를연속해서다룬다.첫번째몬스터월드는게임은아니지만많은유사한게임에대한중요한아이디어를제공한다.이어지는장들에서몬스터객체들을어떻게생성하고소멸하며,몬스터월드맵을어떻게구현하고,상속으로다양한몬스터를어떻게만들며,다형성이나일반화프로그래밍기법들이어떻게적용될수있는지를공부한다.이기법들이적용됨에따라점점몬스터월드는게임으로변화된다.
-독자들은“어떤게임을구현할때,게임의어떤기능을위해어떤문법을사용했는지”를기억했으면좋겠다.그리고이것이이책을쓰게된가장중요한이유이다.작은예제를통해공부한다양한문법보다는어떤게임을구현하기위해사용한기능들이훨씬더기억하기쉽고효과적으로활용될수있을것이라생각하기때문이다.
-각장의뒷부분에는하나의“QnA”와“요약”,“연습문제”와“실습문제”를제공한다.QnA의질문들에는“정답”이없다.필자의의견을참고하여각자생각하고토론해보면좋겠다.“요약”은괄호채우기문제로구성했는데,해답을제공하지만답을보지않고각장을정리해보면좋을것이다.“연습문제”는간단히답할수있는문제들이며,“실습문제”는책에서설명된게임을확장하거나실습과제로활용할수있는문제들을제공한다.

이책은기본적으로C언어를공부한독자들을대상으로하지만,C언어의경험이없더라고2~5장의내용에더많은시간을할애한다면충분히학습하고활용할수있으리라생각한다.또한,C++의복잡한문법이아니라제시된게임을구현하기위해기본적이고실용적인부분들을중심으로구성하였다.그리고Java와같은대부분의객체지향언어에서공통적으로사용하는기법들을중심으로설명하고자하였다.대부분의멤버함수를인라인으로구현해코드의시각적인복잡함을줄이려고노력했고,압축적인형태의코드에는충분한설명을추가하였다.