코틀린 프로그래밍 쿡북
Description
코틀린 프로그래밍을 처음 접하는 이들에게 최적의 솔루션 제공
이 책은 개발자들이 처음 코틀린을 사용해 개발할 때 흔히 겪는 문제에 대한 완벽한 해법을 제시해주고 있다. 또한 코딩하는 데에 필요한 트릭과 컨셉들을 배우는데 최고의 솔루션을 제공한다. 그동안 몰랐던 코틀린의 놀라운 잠재력을 발견할 수 있을 것이다.

코틀린 개요부터 시작해서 코틀린이 제공하는 몇 가지 간단한 개념과 기능들을 다루는데 여기에서는 객체지향 프로그래밍의 기초와 간단한 안드로이드 애플리케이션을 만든다. 다음으로는 네트워킹, 데이터베이스, 파일 입출력, 테스팅 등의 조금 더 복잡한 개념에 대해 살펴본다. 또한 복잡한 안드로이드 개발을 매우 단순하고 쉬운 것으로 바꾸어주는 Anko라는 코틀린 라이브러리에 대해 살펴볼 것이다. 마지막으로는 개발자가 수시로 필요로 하는 잡다하고 유용한 내용들을 다룬다.

이 책의 대상 독자
이 책은 코틀린을 처음 접하는 독자들을 위해 구성되었다. 안드로이드와 자바 개발에 경험을 가지고 있으면 더 쉽게 책 내용을 이해할 수 있을 것이며 기존 안드로이드 개발 프로세스를 보다 효율적이고 재미있게 만들기 위해 코틀린을 배우기 원한다면 이 책은 최고의 선택이 될 것이다. 또한 코틀린을 이용해 개발하는 동안 겪을 수 있는 문제를 해결하는데 최적의 방법을 알려주고 있다.
저자

아난드셰카르로이

프리랜서안드로이드개발자이다.네덜란드의ConceptOffice,미국의스타트업인Conconiously.Life,NextFan-FantasyIndyCar등의기업에서일했다.또한Udacity에서구글의AssociateAndroidDeveloperFastTrack프로그램의멘토이며20명의소프트웨어개발자팀을멘토링하고있다.AndroidPub에서글을쓰기도한다.

목차

저자소개
들어가며

1장:설치및환경구성
코틀린안드로이드프로젝트생성
코틀린코드실행을위해Gradle(그레이들)이용하기
컴파일된코틀린클래스실행하기
그레이들과코틀린으로실행가능한JAR파일만들기
콘솔에서입력받기
자바-코틀린간코드변환
코틀린으로logger만들기
자바코드에서코틀린키워드로취급되는식별자피하기
as키워드로한파일안에서중복되는클래스이름및함수명해결하기
코틀린에서의비트연산
문자열을Long,Double,Int로파싱하기
문자열템플릿이용하기

2장.제어흐름
if키워드를활용한값할당
when과함께범위사용
사용자정의오브젝트와when
표현식으로서의try-catch
also함수를이용한swap함수만들기
사용자정의예외
다중조건반복문

3장.클래스와오브젝트
생성자초기화
데이터타입변환
객체의타입체크
추상클래스
클래스속성순회
인라인속성
중첩클래스
클래스참조얻기
위임속성사용
열거형사용

4장.함수
함수에서기본값지정
함수에서명명된인수사용
Kotlin에서RecyclerView어댑터만들기
Kotlin에서gettersetter만들기
변수인수를함수에전달
함수를매개변수로전달
정적함수선언
Kotlin에서use키워드사용
Kotlin의클로저작업
리시버가있는함수리터럴
익명함수로작업하기

5장.객체지향프로그래밍
코틀린의인터페이스
코틀린에서다중오버라이드된메소드로복잡한인터페이스를구현하는방법
코틀린에서클래스확장하기(상속및확장함수)
코틀린에서제네릭을사용하는방법
코틀린에서다형성을구현하는방법
클래스계층구조제한

6장.컬렉션프레임워크
두개의컬렉션을병합하는방법
원본컬렉션을컬렉션쌍으로분할
지정된비교자로리스트정렬
내림차순으로정렬
Gson을사용하여JSON응답구문분석하기
람다식을사용하여필터링및매핑하는방법
객체목록을정렬하고끝에null객체를유지하는방법
코틀린에서lazy리스트를구현하는방법
코틀린에서문자열을채우는법
다차원배열이나맵을1차원으로바꾸는방법
코틀린에서여러필드로컬렉션을정렬하는방법
코틀린리스트에서limit사용방법
코틀린에서2차원배열을만드는방법
코틀린에서처음N개의항목을건너뛰는방법

7장.파일핸들링
InputReader를이용해파일읽기
InputReader를이용해파일의모든데이터읽기
InputReader를이용해파일로부터한줄씩읽기
BufferedReader를이용해파일읽기
BufferedReader를이용해파일의모든데이터읽기

BufferedReader를이용해파일로부터한줄씩읽기
네트워크로부터문자열과JSON데이터읽기

8장.AnkoCommons와확장함수
Gradle프로젝트에서Anko사용설정
확장함수로안드로이드프레임워크확장하기
확장기능을속성으로사용하기
Anko에서intent사용하기
Anko를이용해전화걸기
Anko를이용해문자메시지보내기
Anko를이용해웹페이지띄우기
Anko를이용해텍스트공유하기
Anko를이용해이메일보내기
Anko를이용해다이얼로그만들기
텍스트목록이있는다이얼로그만들기
뷰에서Anko사용
Anko를이용해로그남기기
Anko를이용한디스플레이단위사용
안드로이드버전체크하기

9장.AnkoLayouts
AnkoLayout을위해그레이들에Anko라이브러리설정하기
코틀린코드로유저인터페이스만들기
이미작성된XML레이아웃이용하기
AnkoComponent인터페이스이용하기
Anko에서안드로이드테마설정
Anko뷰의레이아웃매개변수설정
Anko뷰에이벤트리스너추가하기
DSL에서XML레이아웃삽입하기
XML파일을DSL로변환하기
스낵바띄우기
토스트띄우기
합성속성을이용해뷰에접근하기
확장함수를이용해뷰그룹안의뷰에접근하기

10장.데이터베이스와의존성주입
코틀린에서SQLite사용하기
데이터베이스테이블생성
코틀린에서의의존성주입
데이터베이스로부터데이터읽기
데이터베이스커서를객체리스트로변환하기
널일수있는객체를위한parseOpt
데이터베이스에데이터쓰기
싱글톤객체생성
코틀린에서Dagger2사용하기
코틀린에서Butterknife사용하기

11장.네트워킹과동시성
네트워크로부터데이터가져오기
데이터클래스를생성하기
데이터클래스를수정하면서복제하기
JSON파싱
파일다운로드
RxJava와함께Retrofit사용하기
RecyclerView를이용해무한스크롤되는리스트만들기
안드로이드에서백그라운드작업을위해Anko사용하기
코루틴을이용한멀티스레딩구현

12장.람다와딜리게이트
람다를이용한클릭리스너
지연위임속성
Delegates.observable
Delegates.vetoable
사용자정의Delegate
lateinit사용
SharedPreferences사용
전역변수만들기

13장.테스팅
코틀린코드에대해단위테스트수행
Mockito를이용한단위테스트
통합테스트
코틀린에서JUnitRule작성(@Rule)
Espresso를이용한인수테스트
코틀린으로assertEquals작성

14장.코틀린으로웹서비스만들기
톰캣에서애플리케이션실행하기
RESTful서비스를위한의존성설정
REST컨트롤러생성
스프링부트를위한애플리케이션클래스생성