장바구니 담기 close

장바구니에 상품을 담았습니다.

깡샘의 코틀린 프로그래밍

깡샘의 코틀린 프로그래밍 코틀린 기초부터 안드로이드/ 자바스크립트/ 스프링에 응용까지

  • 강성윤
  • |
  • 루비페이퍼
  • |
  • 2018-03-05 출간
  • |
  • 706페이지
  • |
  • 189 X 258 X 31 mm (B5) /1486g
  • |
  • ISBN 9791186710272
판매가

34,000원

즉시할인가

30,600

카드할인

0원(즉시할인 0%)

적립금

1,700원 적립(5%적립)

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

추가혜택

네이버페이 무조건 1%적립+ 추가 1%적립

수량
+ -
총주문금액
30,600

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

코틀린의 주요 특징과 문법 학습
함수형 프로그래밍의 완벽한 이해 
안드로이드, 자바스크립트, 스프링 프레임워크에 응용까지

만일 여러분이 자바 개발자라면, 또는 안드로이드, 또는 자바스크립트, 또는 스프링 개발자라면 이 책으로 코틀린을 가장 확실하게 배울 수 있습니다. 약간의 프로그래밍 경험만 있다면 코틀린으로 모바일 앱을 만들고 프런트엔드, 백엔드 웹 애플리케이션을 개발할 수 있도록 쉽고 친절하게 안내합니다.

이 책은 여러분이 코틀린이라는 새로운 프로그래밍 언어를 학습할 때 길을 잃지 않고 완주할 수 있도록 돕습니다. "깡샘! 질문 있어요!" 코너에서 코틀린을 학습할 때 한번쯤 궁금해할 만한 질문에 답하였으며, "자바 vs 코틀린" 코너에서는 코틀린이 기존 프로그래밍 언어와 어떻게 다른지를 소개합니다. 

그리고 책의 후반부에서는 코틀린 프로그래밍으로 안드로이드 앱을 개발하거나 웹 애플리케이션을 개발하는 과정을 단계별로 따라 해봄으로써, 개발 현장에서 어떻게 적용할 수 있는지 경험할 수 있습니다.

- 출판사 서평 -
저는 이 책을 "완전체"라고 표현하고 싶습니다. 기본적인 이론에 그치지 않고 응용까지 담겨 있기 때문인데요. 기존에 자바로 개발하던 소스, 자바스크립트나 스프링 프레임워크로 개발하던 소스를 코틀린으로 어떻게 작성하는지 볼 수 있었던 게 아주 좋았습니다.

이 책을 보려는 사람은 대부분 자바 기술을 기반에 두고 개발하는 분들일 겁니다. 그래서인지 자바 개발자를 배려한 구성도 눈에 띄었습니다. 그렇지만 저는 C와 C++를 조금 다룰 수 있고 자바는 깊게 알지 못하는 상황에서 이 책으로 처음 코틀린 프로그래밍을 접했습니다. 그런데 책을 보는 데 큰 무리는 없었습니다. 제 생각으로는 기본적인 프로그래밍 경험은 있어야 이 책을 볼 수 있을 것 같습니다. 그리고 자바 프로그래밍 경험이 있다면 더 좋고, 스칼라나 스위프트처럼 최근에 나온 프로그래밍 언어의 경험이 있다면 더 쉽게 접근할 수 있지 않을까 싶습니다.

물론, 함수형 프로그래밍을 이해하고 활용하는 게 쉽지 않았지만, 책에서 여러 사례를 통해 반복해서 설명해주니 조금씩 선명해지는 느낌이 들었습니다. 아직 완벽하게 적용하기에는 어려움이 있겠지만 개괄적인 내용은 파악했으니 한 번 더 읽거나 다른 책을 참고해서 진행하던 프로젝트에 적용해보려고 합니다.

또 한 가지는 말투가 딱딱하지 않고 현장에서 강의를 듣는 듯한 느낌이어서 좋았습니다. 설명 방식이나 예제, 그림들을 보면 저자의 정성이 느껴진다고 할까? 아무튼 저는 이런 방식이 참 좋았는데요. 예를 들어 어떤 예약어나 개념을 설명할 때 그것이 나오게 된 배경을 설명해주는데, 먼저 독자가 알만한 간단한 예제로 에러가 발생하거나 불편한 코드를 보여주고 이를 코틀린 프로그래밍 기법들로 어떻게 개선하는지 보여줍니다. "이건 이거다"가 아니라 "이건 이래서 이거이므로 이렇게 쓴다"의 차이라고 할까? 이 기법이 왜 나왔는지 어떨 때 사용하는지 직접 체득하면서 배우니 확실히 받아들여지는 속도와 깊이가 다른 것 같습니다.

제가 처음 경험해본 코틀린은 JVM에서 돌아가는 건 자바와 같지만, 많은 부분에서 확실히 자바와는 다른 언어라는 생각이 들었습니다. 특히 코드의 안전성과 생산성 면에서 더 나은 선택일 수 있다고 생각했습니다. 만일 코틀린 프로그래밍을 체계적으로 정리하고 싶거나 현업에서 코틀린을 적용해보려는 계획이 있다면, 아니면 현대적 프로그래밍 기법들을 경험해보고 싶다면 이 책이 많은 도움이 될 것으로 확신합니다. 최소한 후회하지는 않을 것 같습니다.

- 우연히 먼저 보게 된 「몽테크리스토」님 서평 중

목차

Part 01 코틀린 시작하기

01 _ 코틀린 이해하기
1.1. 코틀린이란?
1.1.1. 코틀린 소개
1.1.2. 코틀린 특징
1.2. 코틀린으로 작성 가능한 프로그램
1.2.1. 자바를 코틀린으로
1.2.2. 안드로이드를 코틀린으로
1.2.3. 자바스크립트를 코틀린으로
1.2.4. 서버 측 웹 애플리케이션을 코틀린으로
1.2.5. 스프링 부트를 이용하는 Restful 서비스를 코틀린으로

02 _ 코틀린 개발환경
2.1. 코틀린 개발환경 - IntelliJ
2.1.1. IntelliJ 설치
2.1.2. IntelliJ에서 코틀린 프로그램 작성
2.1.3. IntelliJ 이용 기법
2.1.4. IntelliJ에서 그레이들을 이용한 개발환경
2.1.5. IntelliJ에서 메이븐을 이용한 개발환경
2.2. 코틀린 개발환경 ? 안드로이드 스튜디오
2.2.1. 안드로이드 스튜디오 설치
2.2.2. 안드로이드 스튜디오에서 코틀린 프로그램 작성
2.2.3. AVD 설정 및 안드로이드 프로그램 실행
2.3. 코틀린 개발환경 - 이클립스
2.4. 코틀린 개발환경 ? CLI(Command Line Interface)

03 _ 코틀린 기본 작성법
3.1. 코틀린 파일 정의
3.1.1. 일반 파일과 클래스 파일
3.1.2. 파일의 구성요소
3.2. 패키지
3.2.1. 패키지 기본 개념 package
3.2.2. 가상 패키지
3.2.3. 변수/함수 임포트 import
3.2.4. 기본 패키지
3.2.5. 이름 변경해서 임포트하기 as

04 _ 변수와 함수
4.1. 변수 선언 및 초기화
4.1.1. 변수 선언법 val, var
4.1.2. 변수 초기화
4.1.3. null이 될 수 있는 변수와 null
4.1.4. 상수변수 선언 const
4.2. 함수 사용법
4.2.1. 함수 선언 fun
4.2.2. 함수 오버로딩
4.2.3. 기본 인수와 명명된 인수
4.2.4. 중위 표현식 infix
4.2.5. 가변 인수 vararg
4.2.6. 재귀함수 tailrec

Part 02 코틀린 기초 프로그래밍

05 _ 데이터 타입
5.1. 기초 데이터 타입
5.1.1. 숫자 타입 Int, Long, Short, Double, Float
5.1.2. 논리, 문자와 문자열 타입 Boolean, char, String
5.1.3. Any 타입
5.1.4. null 허용 타입
5.1.5. Any, Any? 타입
5.1.6. Unit과 Nothing
5.1.7. 타입 확인과 캐스팅 is
5.2. 컬렉션 타입
5.2.1. 배열 Array
5.2.2. List, Set, Map
5.2.3. 이터레이터 Iterator

06 _ 흐름 제어 구문과 연산자
6.1. 조건문
6.1.1. if 표현식
6.1.2. when 표현식
6.2. 반복문
6.2.1. for 반복문 in, indices
6.2.2. while 반복문
6.2.3. break와 continue 문, 그리고 라벨
6.3. 연산자
6.3.1. 대입 연산자 =
6.3.2. 산술 연산자 +, -, *, /, %
6.3.3. 전개 연산자 *
6.3.4. 복합 대입 연산자 +=, -=, *=, /=, %=
6.3.5. 증감 연산자 ++, --
6.3.6. 논리 연산자 &&, ||, !
6.3.7. 일치 연산자 ==, !=, ===, !==
6.3.8. 비교 연산자 <, >, <=, >=
6.3.9. 범위 연산자 ..
6.3.10. Null 안전 관련 연산자 ?, ?:, ?., !!
6.4. 연산자 재정의
6.4.1. 연산자 재정의 방법 operator fun
6.4.2. 연산자 함수

07 _ 클래스
7.1. 클래스 선언 및 생성
7.1.1. 클래스 선언 class
7.1.2. 객체 생성
7.2. 생성자
7.2.1. 주 생성자 constructor
7.2.2. 보조 생성자 constructor
7.2.3. this( )에 의한 생성자 연결

08 _ 프로퍼티
8.1. 코틀린에서 프로퍼티 이용
8.1.1. 프로퍼티란?
8.1.2. 사용자 정의 프로퍼티
8.1.3. 주 생성자와 프로퍼티
8.2. 프로퍼티 초기화
8.2.1. 초기화 블록에서 초기화 init
8.2.2. null 허용으로 선언
8.2.3. 늦은 초기화 lateinit
8.2.4. 초기화 미루기 by lazy
8.3. 프로퍼티 값 변경 감지

Part 03 코틀린과 객체지향 프로그래밍

09 _ 상속
9.1. 코틀린에서의 상속
9.1.1. Any 클래스
9.1.2. 상속을 통한 클래스 정의 open
9.2. 오버라이드
9.2.1. 함수 오버라이드 override
9.2.2. override 예약어
9.2.3. 프로퍼티 오버라이드
9.2.4. 상위 클래스 멤버 접근 super
9.3. 상속과 생성자
9.3.1. 상위 클래스 생성자 호출
9.3.2. 상하위 생성자의 수행 흐름
9.4. 상속과 캐스팅
9.4.1. 스마트 캐스팅
9.4.2. as를 이용한 캐스팅
9.4.3. null 허용 객체의 캐스팅 as?
9.5. 접근 제한자
9.5.1. 접근 제한자란?
9.5.2. 접근 제한자와 접근 범위
9.5.3. 프로퍼티와 생성자의 접근 제한
9.5.4. 상속 관계와 접근 제한자

10 _ 추상 클래스와 인터페이스
10.1. 추상 클래스
10.1.1. 추상 클래스 선언 abstract
10.1.2. 추상 클래스 이용
10.2. 인터페이스
10.2.1. 인터페이스 선언 및 구현 interface
10.2.2. 인터페이스와 프로퍼티
10.2.3. 오버라이드 함수 식별

11 _ 다양한 코틀린 클래스
11.1. 데이터 클래스
11.1.1. 데이터 클래스란? data
11.1.2. 데이터 클래스의 함수
11.2. Enum 클래스
11.2.1. 열거형 클래스 선언 및 이용 enum
11.2.2. 익명 클래스 이용
11.3. Sealed 클래스
11.4. Nested 클래스 inner
11.5. Object 클래스
11.5.1. object를 이용한 익명 내부 클래스 정의
11.5.2. 타입 명시로 object 이용
11.5.3. object 선언
11.5.4. companion 예약어

Part 04 코틀린과 함수형 프로그래밍

12 _ 함수형 프로그래밍과 람다
12.1. 함수형 프로그래밍이란?
12.1.1. 함수형 프로그래밍 정의
12.1.2. 함수형 프로그래밍의 원칙
12.1.3. 코틀린에서 일급 객체로서의 함수
12.2. 람다 표현식
12.2.1. 람다 표현식이란?
12.2.2. 함수 타입
12.2.3. it을 이용한 매개변수 이용
12.2.4. 멤버 참조 이용

13 _ 고차 함수와 인라인 함수
13.1. 고차 함수
13.1.1. 고차 함수란?
13.1.2. 고차 함수와 함수 타입 매개변수
13.1.3. 고차 함수와 함수 반환 
13.1.4. 함수 참조와 익명 함수 이용 
13.1.5. 코틀린 API의 유용한 고차 함수run( ), apply( ), let( ), with( ) 
13.2. 인라인 함수 inline 
13.2.1. 인라인 함수란? 
13.2.2. 노인라인 noinline 
13.2.3. 논로컬 반환 
13.2.4. 라벨로 반환 
13.3. 클로저 

14 _ 컬렉션 타입과 람다 
14.1. 집합 연산 함수 
14.1.1. forEach( ), forEachIndexed( ) 
14.1.2. all( ), any( ) 
14.1.3. count( ), find( ) 
14.1.4. reduce( ), reduceRight( ), fold( ), foldRight( ) 
14.1.5. max( ), maxBy( ), min( ), minBy( ) 
14.1.6. none( ), sumBy( ) 
14.2. 필터링 함수 
14.2.1. filter( ) 
14.2.2. filterNot( ), filterNotNull( ) 
14.2.3. drop( ), dropWhile( ), dropLastWhile( ) 
14.2.4. slice( ), take( ), takeLast( ), takeWhile( ) 
14.3. 매핑 함수 
14.3.1. map( ), mapIndexed( ) 
14.3.2. groupBy( )
14.4. 요소 함수 
14.4.1. contains( ) 
14.4.2. elementAt( ), elementAtOrElse( ), elementAtOrNull( ) 
14.4.3. first( ), firstOrNull( ), last( ), lastOrNull( ) 
14.4.4. indexOf( ), indexOfFirst( ), indexOfLast( ) 
14.5. 정렬 함수 
14.5.1. reversed( ) 
14.5.2. sorted( ), sortedBy( ), sortedDescending( ), sortedDescendingBy( ) 

Part 05 코틀린의 다양한 기법 활용

15 _ Null 안전성과 예외 처리 
15.1. Null 안전성 
15.1.1. Null 안전성이란? 
15.1.2. Null 허용과 Null 불허 
15.1.3. Null 확인 연산자 ?. 
15.1.4. 엘비스 연산자 ?: 
15.1.5. 예외 발생 연산자 !!
15.1.6. 안전한 캐스팅 as? 
15.2. 예외 처리 
15.2.1. try-catch-finally 구문으로 예외 처리 
15.2.2. 예외 발생시키기 throw 

16 _ 클래스 확장 
16.1. 확장의 원리 
16.1.1. 확장이란? 
16.1.2. 정적 등록에 의한 실행 
16.2. 프로퍼티와 컴패니언 오브젝트 확장
16.2.1. 프로퍼티 확장 
16.2.2. 컴패니언 오브젝트의 확장 companion 
16.3. 확장 구문의 위치에 따른 이용 
16.3.1. 최상위 레벨에 작성 
16.3.2. 다른 클래스 내에 작성 
16.3.3. 익스텐션 리시버와 디스패치 리시버의 함수명 중복 

17 _ 제네릭 
17.1. 제네릭의 이해 
17.1.1. 제네릭이란? 
17.1.2. 제네릭 선언 및 이용 
17.2. 제네릭 제약 
17.2.1. 타입 제약
17.2.2. Null 불허 제약 
17.3. Variance 
17.3.1. Variance란? 
17.3.2. covariance out 
17.3.3. contravariance in 
17.4. 타입 프로젝션 
17.4.1. 이용 측 Variance 
17.4.2. 스타(*) 프로젝션 
17.5. 실행 시점의 제네릭 
17.5.1. 제네릭과 as, is 이용 
17.5.2. 인라인 함수와 reified
17.6. Unit, Nothing 타입
17.6.1. Unit 타입
17.6.2. Nothing 타입 

18 _ 리플렉션과 어노테이션 
18.1. 리플렉션 
18.1.1. 리플렉션 이해 
18.1.2. 클래스 레퍼런스 
18.1.3. 함수 레퍼런스와 프로퍼티 레퍼런스
18.2. 어노테이션 
18.2.1. 어노테이션 작성 및 이용 annotation 
18.2.2. 어노테이션 설정
18.2.3. 어노테이션 적용 대상 지정
18.2.4. 자바 어노테이션 이용 

19 _ 코틀린의 다양한 기법 
19.1. 델리게이션
19.1.1. 델리게이션 클래스 
19.1.2. 델리게이션 프로퍼티
19.2. SAM 전환
19.2.1. 자바에서 인터페이스 활용
19.2.2. 코틀린에서 SAM 활용
19.3. 타입 에일리어스 typealias

Part 06 코틀린 실전 응용 - 안드로이드 앱 개발

20 _ 안드로이드 앱 개발의 이해 
20.1. 개발 디렉터리와 파일 구조 
20.1.1. 앱의 디렉터리와 파일 
20.1.2. R.java의 이해 
20.1.3. 그레이들(gradle) 파일 
20.2. Hello World 앱 코드 분석 
20.2.1. AndroidManifest.xml 
20.2.2. MainActivity.kt
20.2.3. activity_main.xml

21 _ 안드로이드 UI 프로그래밍 
21.1. 기본적인 UI 프로그래밍 방법 
21.1.1. 액티비티-뷰 구조 
21.1.2. UI 프로그램 작성 방법: 코틀린 코드 VS 레이아웃 XML 
21.2. 뷰의 기초 속성 
21.2.1. id 속성 
21.2.2. layout_width, layout_height 속성 
21.2.3. visibility 속성
21.3. 조금 더 코틀린답게 - Kotlin Android Extension 

22 _ 레이아웃 및 사용자 이벤트 처리 
22.1. Layout 클래스 
22.1.1. LinearLayout 
22.1.2. RelativeLayout 
22.2. 사용자 이벤트 처리 
22.2.1. 이벤트 프로그램 구조 
22.3. 조금 더 코틀린답게 - SAM 전환 

23 _ DBMS와 RecyclerView 
23.1. SQLite을 이용한 영속화 
23.1.1. SQLiteDatabase 클래스 
23.1.2. SQLiteOpenHelper 클래스 
23.1.3. insert( ), query( ), update( ), delete( ) 함수 이용 
23.2. RecyclerView
23.2.1. RecyclerView 소개 
23.2.2. Adapter, ViewHolder 
23.2.3. LayoutManager 
23.2.4. ItemDecoration 

24 _ TODO 앱 개발 
24.1. TODO 앱 소개 
24.1.1. 앱의 기능 
24.1.2. 사용 기술 
24.2. TODO 앱 개발 

Part 07 코틀린 실전 응용 - 웹 애플리케이션 개발

25 _ 자바스크립트 개발을 위한 코틀린 
25.1. 자바스크립트 이해 
25.1.1. 자바스크립트 개발 환경에 대한 이해 
25.1.2. 자바스크립트 개발 언어 
25.2. 자바스크립트를 위한 코틀린 개발환경 
25.2.1. IntelliJ에서 Gradle을 이용한 자바스크립트 개발환경 
25.2.2. Command Line을 이용한 자바스크립트 개발 
25.3. 자바스크립트를 위한 코틀린 기법 
25.3.1. dynamic 타입 
25.3.2. js( ) 함수 이용 
25.3.3. external로 자바스트립트 API 이용 
25.4. 자바스크립트에서 코틀린 소스 이용하기 
25.4.1. 모듈명으로 코틀린 소스 이용 
25.4.2. @JsName 어노테이션 이용 

26 _ 코틀린으로 자바스크립트 웹 애플리케이션 개발 
26.1. 프런트엔드 웹 애플리케이션 
26.1.1. DOM Node 핸들링 
26.1.2. AJAX 프로그래밍 
26.2. DSL을 위한 kotlinx-html-js 라이브러리 이용 
26.2.1. kotlinx-html-js 라이브러리 소개 
26.2.2. kotlinx-html-js를 이용한 DOM Node 동적 생성 
26.3. NodeJS로 백엔드 웹 애플리케이션 개발 
26.3.1. NodeJS와 Express 모듈의 이해 
26.3.2. 코틀린으로 작성하는 NodeJS 프로그램 

27 _ 코틀린으로 스프링 프레임워크 개발 
27.1. 스프링 부트로 개발환경 구축하기 
27.2. 코틀린으로 개발하는 스프링 프로그램
27.2.1. 스프링 IOC - 의존성 주입 
27.2.2. 스프링 AOP - 관점지향 프로그래밍 
27.2.3. 스프링 MVC 
27.3. TODO 웹 애플리케이션 개발 
27.3.1. 애플리케이션 소개 
27.3.2. 사용 기술 
27.3.3. TODO 웹 애플리케이션 개발 

찾아보기

저자소개

 저자: 강성윤
IT 전문 강사인 저자는 멀티캠퍼스에서 소프트웨어 분야를 강의하고 있으며, 2010년부터 안드로이드 앱 개발을 강의하고 있다. 또한, 모바일/IoT 전문업체인 MotizenSoft에서 모바일 팀을 이끌고 있다.   

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.