이미 소장하고 있다면 판매해 보세요.
|
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 |
심재철의 다른 상품
|
인텔리제이를 사용하면 코틀린 외에도 자바, 파이썬, 스칼라, 그루비 등의 다른 프로그래밍 언어로 코드를 작성할 수 있다. 여기처럼 Kotlin/JVM을 선택하는 것은 JVM(Java Virtual Machine)에서 실행되는 코틀린 코드를 목표로 작성한다는 뜻이다. 따라서 하나의 소스 코드만으로도 서로 다른 운영체제에서 실행할 수 있다(JVM에 관련된 더 자세한 내용은 이번 장 뒤의 ‘궁금증 해소하기: JVM에서 실행하기’에서 더 자세히 알아본다). --- p.3
익명 함수는 여는 중괄호({)와 닫는 중괄호(}) 사이에 표현식이나 명령문을 넣어서 작성한다. 여기서는 println을 호출할 때 인자를 둘러싸는 괄호 내부에 중괄호를 사용하여 익명 함수를 정의하였다. 그리고 익명 함수에서는 다음과 같이 하나의 변수를 선언하고 인사 메시지 문자열을 반환한다. --- p.79 List를 반복 처리하는 한 가지 방법이 for 루프이며, ‘List의 각 요소에 대해 무엇인가를 수행하라’는 로직으로 수행된다. 이때 요소의 이름을 지정하면 이것의 타입을 코틀린 컴파일러가 자동으로 찾아서 처리해 준다. NyetHack 게임의 술집 주인은 사업의 일환으로 항상 각 고객에게 친절하게 인사한다. 고객에 대한 인사말을 출력하도록 Tavern.kt를 변경하자. 또한, 콘솔 출력을 알아보기 쉽도록 patronList의 요소를 변경하고 출력하는 코드를 삭제한다. --- p.165 이미 알아보았듯이 클래스의 모든 속성은 게터를 가지며, var 속성의 경우는 세터도 갖는다. 그리고 속성값을 읽을 때는 게터가, 변경할 때는 세터가 자동 실행된다. 기본적으로 게터와 세터의 가시성은 속성 자체의 가시성과 일치한다. 따라서 만일 속성의 가시성이 public이라면 게터와 세터도 public이 된다. --- p.207 확장 함수와 속성은 일반 함수와 속성처럼 동일한 방법으로 사용되지만, 확장하는 클래스에 정의된 것도 아니고 상속을 사용하지도 않는다. 그렇다면 어떻게 JVM에 구현되는 것일까? 이때는 코틀린 컴파일러가 생성하는 바이트코드를 자바로 역컴파일해서 보면 알 수 있다. --- p.342 코틀린 애플리케이션을 개발하려면 최소한 코틀린 컴파일러와 JDK(Java Development Kit)가 설치되어야 한다. 코틀린 컴파일러는 인텔리제이의 플러그인으로 포함되어 자동 설치되므로 따로 설치할 필요 없다. 그러나 JDK는 별도로 설치해야 하며, JDK 6 버전부터 호환 가능하지만 JDK 8 이상 버전을 설치하는 것이 좋다. 만일 JDK가 설치되어 있지 않다면 https://www.oracle.com/technetwork/java/javase/downloads/에 접속한 후 다운로드하고 설치하자. --- p.437 |
|
2019년 가장 유망하고 배워 둘 가치가 있는 프로그래밍 언어 중 하나로 선정된 코틀린!
‘빅 너드 랜치’의 풍부한 소프트웨어 교육과 개발 노하우가 담긴 코틀린 서적! 코틀린은 객체지향뿐만 아니라 함수형 프로그래밍 패러다임까지 품고 있습니다. 이 코틀린 언어를 실습과 함께 확실하게 내 것으로 만들고 싶으시다면 이 책을 선택하세요. 각종 코틀린 학습 키워드를 바탕으로 게임을 만들어가며 차근히 학습할 수 있습니다. 게임을 만든다는 목적이 있으므로 당연히 실습을 위한 많은 예제가 포함되어 있으며, 그 과정 중 독자가 궁금해할 만한 내용을 바로바로 해소해주는 내용도 충실합니다. 무엇보다 각 장 끝에는 하나 이상의 챌린지가 있는데, 이것은 독자분들의 확실한 이해를 위해 작성된 것으로 코틀린을 숙지하는 데 도움이 되도록 반드시 직접 풀어 보면서 학습하세요. |