본문 바로가기

도서 소개

빅 너드 랜치의 코틀린 프로그래밍

이 책은 현재 절판입니다. 그간 읽어주신 분들께 감사드립니다.

2019년 가장 유망하고 배워 둘 가치가 있는 프로그래밍 언어 중 하나로 선정된 코틀린!

‘빅 너드 랜치’의 풍부한 소프트웨어 교육과 개발 노하우가 담긴 코틀린 서적!

도서 구매 사이트(가나다 순)

[강컴] [교보문고] [도서11번가] [반디앤루니스] [알라딘] [예스이십사] [인터파크]

전자책 구매 사이트

(가나다순)

[교보문고] [구글북스] [리디북스] [알라딘] [예스이십사] [인터파크]

출판사 제이펍

원출판사 빅 너드 랜치(Big Nerd Ranch)

원서명 Kotlin Programming: The Big Nerd Ranch Guide(원서 ISBN: 9780135161630)

저자명 조시 스킨, 데이비드 그린핼프

역자명 심재철

출판일 2019년 3월 29일

페이지 476쪽

시리즈 I♥Mobile 36 (아이러브모바일 36)

판 형 46배판변형(188*245*22)

제 본 무선(soft cover)

정 가 30,000원

ISBN 979-11-88621-53-8 (93000)

키워드 코틀린 / 자바 / 빅 너드 랜치 / 젯브레인즈 / 인텔리제이 / IntelliJ IDEA / 안드로이드 / 모바일 / API

분야 프로그래밍 언어 / 코틀린

관련 사이트

저작권사 도서소개 페이지

아마존 도서소개 페이지

코틀린 공색 웹사이트

코틀린 한국 사용자 모임

코틀린 코리아 페이스북 페이지

관련 포스트

2019/03/13 - [출간전 책소식] - 올해의 유망주 코틀린을 소개합니다~!

관련 시리즈

IMobile 시리즈

관련 도서

(* 관련 시리즈 참고)

관련 파일 다운로드

각 장의 프로젝트 파일

강의보조자료 다운로드

교재로 채택하신 분들은 메일을 보내주시면 아래의 자료를 보내드리겠습니다: jeipubmarketer@gmail.com

■ 본문의 그림과 표

샘플 PDF

(차례, 이 책에 대하여, 베타리더 후기, 1 '첫 번째 코틀린 애플리케이션 작성하기', 2 '변수, 상수, 타입' 일부, 3 '조건문과 조건식' 일부, 19 '함수형 프로그래밍' 일부, 21 '코틀린으로 안드로이드 앱 개발하기' 일부)

[sample]빅너드랜치의코틀린프로그래밍.pdf
다운로드

정오표 페이지

■ (등록되는 대로 링크를 걸어 드리겠습니다)

도서 구매 사이트(가나다 순)

[강컴] [교보문고] [도서11번가] [반디앤루니스] [알라딘] [예스이십사] [인터파크]

전자책 구매 사이트

(가나다순)

[교보문고] [구글북스] [리디북스] [알라딘] [예스이십사] [인터파크]

도서 소개

2019년 가장 유망하고 배워 둘 가치가 있는 프로그래밍 언어 중 하나로 선정된 코틀린!

‘빅 너드 랜치’의 풍부한 소프트웨어 교육과 개발 노하우가 담긴 코틀린 서적!

코틀린은 객체지향뿐만 아니라 함수형 프로그래밍 패러다임까지 품고 있습니다. 이 코틀린 언어를 실습과 함께 확실하게 내 것으로 만들고 싶으시다면 이 책을 선택하세요.

각종 코틀린 학습 키워드를 바탕으로 게임을 만들어가며 차근히 학습할 수 있습니다. 게임을 만든다는 목적이 있으므로 당연히 실습을 위한 많은 예제가 포함되어 있으며, 그 과정 중 독자가 궁금해할 만한 내용을 바로바로 해소해주는 내용도 충실합니다. 무엇보다 각 장 끝에는 하나 이상의 챌린지가 있는데, 이것은 독자분들의 확실한 이해를 위해 작성된 것으로 코틀린을 숙지하는 데 도움이 되도록 반드시 직접 풀어 보면서 학습하세요.

저자 소개

조시 스킨(Josh Skeen)

빅 너드 랜치의 소프트웨어 엔지니어이자 강사이다. 쿠퍼 유니온 과학예술대학을 졸업하고 인터랙티브 아트를 만드는 일환으로 소프트웨어 개발을 시작하여 지금까지 IT 업계에 몸담고 있다. 빅 너드 랜치에서 자바와 안드로이드, 코틀린을 가르치고 있으며, 컴퓨터를 사용하지 않을 때는 달리기, 브라질 유술 등을 즐긴다.

데이비드 그린핼프(David Greenhalgh)

빅 너드 랜치의 안드로이드 팀 매니저이자 강사이며, 새로운 것을 만들기 좋아한다. 조지아공과대학 컴퓨터 공학 학위를 받았다. 안드로이드 앱을 작성하지 않거나 교육 과정을 개발하지 않을 때는 요리를 하거나 독서 또는 미식축구 경기 관람을 즐긴다.

역자 소개

심재철

현재 프리랜서로, 데이터베이스/모바일 시스템 컨설팅과 강의를 하고 있다. 또한, 20년 넘게 데이터베이스와 객체지향 시스템 설계 및 개발 프로젝트와 건설/금융 분야 애플리케이션 개발 등에 참여했다. 새로운 테크놀로지와 다양한 프로그래밍 언어를 사용해서 실무에 활용하고 가르치는 것을 좋아한다. 저서로는 《핵심만 골라 배우는 코틀린 프로그래밍》이 있으며, 번역서로는 《카프카 핵심 가이드》, 《핵심만 골라 배우는 안드로이드 스튜디오 3 & 프로그래밍》, 《실무에 적용하는 안드로이드 프로그래밍(제2판)》, 《Learn Android Studio》, 《SQLite 마스터북(제2판)》, 《프로 오브젝티브-C 디자인 패턴》, 《세븐 데이터베이스: 만들면서 파악하는 NoSQL》, 《UML 사용자 지침서》, 《Thinking in JAVA 4/e》, 《이펙티브 자바》 등이 있다.

차례

CHAPTER 1 첫 번째 코틀린 애플리케이션 작성하기 1

인텔리제이 설치하기 ...... 1

첫 번째 코틀린 프로젝트 생성하기 ...... 2

코틀린 REPL ...... 9

궁금증 해소하기: 왜 인텔리제이를 사용할까? ...... 11

궁금증 해소하기: JVM에서 실행하기 ...... 11

챌린지: REPL로 산술 연산자 테스트하기 ...... 12

더보기

CHAPTER 2 변수, 상수, 타입 13

타입 ...... 13

변수 선언하기 ...... 14

코틀린의 내장 타입 ...... 16

읽기 전용 변수 ...... 17

타입 추론 ...... 20

컴파일 시점 상수 ...... 22

코틀린 바이트코드 살펴보기 ...... 23

궁금증 해소하기: 코틀린의 자바 기본 타입 ...... 25

챌린지: hasSteed ...... 27

챌린지: 유니콘의 뿔 ...... 27

챌린지: 마법의 거울 ...... 28

CHAPTER 3 조건문과 조건식 29

if/else 문 ...... 30

범위 ...... 42

when 표현식 ...... 43

문자열 템플릿 ...... 45

챌린지: 범위에 관해 추가로 알아보기 ...... 47

챌린지: 아우라 관련 코드 개선하기 ...... 48

챌린지: 구성 가능한 형식의 상태 출력 ...... 49

CHAPTER 4 함수 51

기존 코드를 함수로 만들기 ...... 51

함수의 구조 ...... 54

함수 호출하기 ...... 58

함수들로 리팩터링하기 ...... 60

우리의 함수 작성하기 ...... 62

기본 인자 ...... 63

단일 표현식 함수 ...... 65

Unit 함수 ...... 66

지명 함수 인자 ...... 67

궁금증 해소하기: Nothing 타입 ...... 68

궁금증 해소하기: 자바의 파일 수준 함수 ...... 70

궁금증 해소하기: 함수 오버로딩 ...... 72

궁금증 해소하기: 백틱 함수 이름 ...... 73

챌린지: 단일 표현식 함수 ...... 75

CHAPTER 5 익명 함수와 함수 타입 77

익명 함수 ...... 77

타입 추론 지원 ...... 84

함수를 인자로 받는 함수 정의하기 ...... 86

인라인 함수로 만들기 ...... 88

함수 참조 ...... 90

반환 타입으로 함수 타입 사용하기 ...... 91

궁금증 해소하기: 코틀린의 람다는 클로저다 ...... 93

궁금증 해소하기: 람다 vs 익명 내부 클래스 ...... 94

CHAPTER 6 null 안전과 예외 97

코틀린의 null 처리 개요 ...... 97

코틀린의 명시적 null 타입 ...... 99

에러 검출 시점(컴파일 VS 런타임) ...... 101

null 안전 처리 ...... 101

예외 ...... 109

전제 조건 ...... 114

null: 무엇이 좋을까? ...... 116

궁금증 해소하기: checked 예외와 unchecked 예외 ...... 117

궁금증 해소하기: 다른 언어의 코드를 같이 사용할 때의 null 처리 ...... 118

CHAPTER 7 문자열 121

부분 문자열 추출하기 ...... 121

문자열 변경하기 ...... 126

문자열 비교 ...... 129

궁금증 해소하기: 유니코드 ...... 130

궁금증 해소하기: 문자열의 각 문자를 하나씩 처리하기 ...... 131

챌린지: toDragonSpeak 함수 개선하기 ...... 132

CHAPTER 8 숫자 133

숫자 타입 ...... 133

정수 ...... 134

소수 ...... 136

문자열을 숫자 타입으로 변환하기 ...... 137

Int 타입을 Double 타입으로 변환하기 ...... 138

Double 타입 값의 형식 지정하기 ...... 140

Double 타입 값을 Int 타입 값으로 변환하기 ...... 141

궁금증 해소하기: 비트 연산 ...... 142

챌린지: 잔액 부족 처리하기 ...... 143

CHAPTER 9 표준 함수 145

apply ...... 145

let ...... 147

run ...... 148

with ...... 150

also ...... 150

takeIf ...... 151

표준 라이브러리 함수 사용하기 ...... 153

CHAPTER 10 List와 Set 155

List ...... 155

반복 처리 ...... 165

파일 데이터를 읽어서 List에 넣기 ...... 169

해체 선언 ...... 172

Set ...... 172

while 루프 ...... 177

break 표현식 ...... 179

컬렉션 변환 ...... 180

궁금증 해소하기: 배열 타입 ...... 181

궁금증 해소하기: 읽기 전용 vs 변경 불가능 ...... 182

챌린지: 정형화된 술집 메뉴 ...... 183

CHAPTER 11 Map 185

Map 생성하기 ...... 185

Map에서 값 가져오기 ...... 188

Map에 항목 추가하기 ...... 189

Map의 값 변경하기 ...... 191

챌린지: 술집 문지기 ...... 195

CHAPTER 12 클래스 정의하기 197

클래스 정의하기 ...... 197

인스턴스 생성하기 ...... 198

클래스 함수 ...... 199

가시성과 캡슐화 ...... 200

클래스 속성 ...... 202

NyetHack 코드 리팩터링하기 ...... 209

패키지 사용하기 ...... 217

궁금증 해소하기: var과 val 속성의 내부 구현 ...... 220

궁금증 해소하기: 경합 상태 방지하기 ...... 223

궁금증 해소하기: 패키지 가시성 ...... 225

CHAPTER 13 초기화 227

생성자 ...... 228

초기화 블록 ...... 234

속성 초기화 ...... 235

초기화 순서 ...... 239

초기화 지연시키기 ...... 241

궁금증 해소하기: 초기화 순서를 고려한 코드 작성 ...... 244

챌린지: 엑스컬리버 검의 불가사의 ...... 247

CHAPTER 14 상속 249

Room 클래스 정의하기 ...... 249

서브 클래스 생성하기 ...... 251

타입 검사 ...... 257

코틀린 타입의 상속 계층 ...... 260

궁금증 해소하기: Any 클래스 ...... 263

CHAPTER 15 객체 267

object 키워드 ...... 267

중첩 클래스 ...... 276

데이터 클래스 ...... 279

enum 클래스 ...... 284

연산자 오버로딩 ...... 287

NyetHack 게임 세계 탐험하기 ...... 290

궁금증 해소하기: 객체의 값 비교하기 ...... 293

궁금증 해소하기: ADT ...... 296

챌린지: ‘quit’ 명령 ...... 299

챌린지: 게임 세계 지도 구현하기 ...... 300

챌린지: 종을 치기 ...... 300

CHAPTER 16 인터페이스와 추상 클래스 301

인터페이스 정의하기 ...... 301

인터페이스 구현하기 ...... 303

기본 구현 ...... 305

추상 클래스 ...... 306

NyetHack의 전투 기능 ...... 309

CHAPTER 17 제네릭 315

제네릭 타입 정의하기 ...... 316

제네릭 함수 ...... 318

복합 제네릭 타입 매개변수 ...... 320

제네릭 타입 제약 ...... 322

vararg와 get ...... 323

in과 out ...... 326

궁금증 해소하기: reified 키워드 ...... 331

CHAPTER 18 확장 335

확장 함수 정의하기 ...... 335

제네릭 확장 함수 ...... 338

확장 속성 ...... 340

null 가능 타입의 확장 함수 ...... 341

확장 함수의 바이트코드 구현 ...... 342

확장 함수로 추출하기 ...... 343

확장 파일 정의하기 ...... 345

확장 함수 이름 변경하기 ...... 347

코틀린 표준 라이브러리의 확장 함수와 속성 ...... 348

챌린지: toDragonSpeak 확장 함수 ...... 349

챌린지: frame을 확장 함수로 변경하기 ...... 349

CHAPTER 19 함수형 프로그래밍 351

함수 유형 ...... 352

왜 함수형 프로그래밍일까? ...... 357

시퀀스 ...... 359

궁금증 해소하기: 성능 측정 ...... 361

챌린지: Map의 키와 값을 바꿔치기하기 ...... 362

챌린지: 함수형 프로그래밍을 Tavern.kt에 적용하기 ...... 362

챌린지: 슬라이딩 윈도 ...... 363

CHAPTER 20 자바와의 상호운용 365

자바 클래스와 상호운용하기 ...... 366

상호운용과 null 처리 ...... 367

타입 매핑 ...... 371

게터와 세터 그리고 상호운용 ...... 373

JVM 애노테이션 ...... 375

예외와 상호운용 ...... 385

자바의 함수 타입 ...... 389

org.jetbrains.annotations 라이브러리 추가하기 ...... 391

CHAPTER 21 코틀린으로 안드로이드 앱 개발하기 393

안드로이드 스튜디오 ...... 393

UI 정의하기 ...... 400

에뮬레이터에서 앱 실행하기 ...... 403

캐릭터 생성하기 ...... 405

Activity 클래스 ...... 406

뷰 컴포넌트를 코드와 연결시키기 ...... 407

코틀린-안드로이드 확장의 합성 속성 ...... 410

클릭 리스너 설정하기 ...... 412

액티비티 인스턴스의 상태 보존 ...... 414

확장 함수를 사용해서 코드 리팩토링하기 ...... 417

궁금증 해소하기: 안드로이드 KTX와 Anko 라이브러리 ...... 420

CHAPTER 22 코루틴 개요 423

캐릭터 데이터 파싱하기 ...... 424

실시간으로 데이터 가져오기 ...... 426

안드로이드 main 스레드 ...... 429

코루틴을 활성화시키기 ...... 429

async 함수를 사용하여 코루틴 지정하기 ...... 430

launch vs async/await ...... 432

실행 보류 함수 ...... 432

챌린지: 실시간 데이터 ...... 433

CHAPTER 23 이 책을 마치며 435

어디로 가야 할까? ...... 435

부담 없는 연락처 ...... 436

감사합니다! ...... 436

APPENDIX A 인텔리제이 설치와 구성하기 437

A-1: JDK 설치하기 ...... 437

A-2: 윈도우 시스템에서 인텔리제이를 설치하기 ...... 437

A-3: 맥 OS에서 인텔리제이를 설치하기 ...... 442

A-4: 리눅스에서 인텔리제이를 설치하기 ...... 442

 

'도서 소개' 카테고리의 다른 글

송쌤의 엔트리 게임 코딩 학교  (1) 2019.05.14
파이토치 첫걸음  (0) 2019.05.09
테라폼: 설치에서 운영까지  (0) 2019.03.29
앤디 필드의 유쾌한 R 통계학  (6) 2019.02.28
케라스 창시자의 딥러닝 with R  (18) 2019.02.20