코틀린 안드로이드 프로그래밍 [안드로이드 예제로 이해하는 코틀린]
- 원서명Learn Kotlin for Android Development: The Next Generation Language for Modern Android Apps Programming (ISBN 9781484244685)
- 지은이피터 슈패스(Peter Späth)
- 옮긴이유진호
- ISBN : 9791161755793
- 35,000원
- 2021년 10월 29일 펴냄 (절판)
- 페이퍼백 | 544쪽 | 188*235mm
- 시리즈 : 프로그래밍 언어
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/learn-kotlin
(안드로이드 스튜디오 버전 문제로 인해 2021년 11월 29일 기준으로 업데이트한 버전입니다.)
요약
코틀린을 학습할 때 좋은 학습서이자 참고서로 활용할 수 있다. 안드로이드 애플리케이션 개발을 예제로 코틀린을 설명하지만 안드로이드 개발을 본격적으로 배우기 위한 책은 아니다. 코틀린을 사용한 프로그래밍에 중점을 두고, 그 과정에서 코틀린이라는 언어를 처음 사용하고 학습하는 데 필요한 내용을 적절하게 다룬다.
이 책에서 다루는 내용
◆ 안드로이드에서 실행되는 첫 코틀린 앱 제작
◆ 안드로이드 개발에 코틀린 클래스와 객체 사용
◆ 구조, 루프, 결정 및 스코프 사용
◆ 데이터 작업 수행
◆ 데이터 컨테이너, 배열 및 컬렉션 마스터
◆ 예외 처리와 외부 라이브러리 사용
이 책의 대상 독자
프로그래밍 지식이 거의 없는 초보 소프트웨어 개발자, 향후 안드로이드 프로젝트에 코틀린을 사용하려는 다른 언어 지식이 있는 개발자를 위한 책이다. 대상 플랫폼은 안드로이드 디바이스다. 안드로이드를 플랫폼으로 사용하고 코틀린 프로그래밍 언어와 코틀린이 안드로이드에 사용되는 방법을 철저하게 소개한다.
프로그램 설치 및 시작을 포함해 데스크톱이나 랩톱 컴퓨터를 사용하는 방법의 기본 지식이 필요하다. 사용하려는 운영 체제는 중요한 역할을 하지 않지만, 안드로이드 스튜디오를 개발 환경으로 사용하므로 이 통합 개발 환경(IDE)을 실행할 수 있는 운영 체제를 선택해야 한다. 이러한 운영 체제로는 리눅스, 윈도우, 맥 OS가 있다. 스크린 샷은 우분투 리눅스에서 찍었다. 초급부터 중급 수준 복잡성의 안드로이드용 코틀린 프로그램을 작성하고 실행할 수 있다.
이 책의 구성
1장, ‘첫 코틀린 애플리케이션: Hello Kotlin’에서는 간단한 코틀린 프로그램을 작성하고 실행하기 위해 안드로이드 스튜디오 IDE를 사용하는 방법을 배운다.
2장, ‘클래스와 객체: 객체지향 철학’의 주요 주제인 객체지향은 클래스, 인스턴스화, 객체에 대한 것이다.
3장, ‘클래스의 작동: 프로퍼티와 함수’에서는 프로퍼티와 함수 선언을 얘기한다. 객체지향의 중요 기능인 상속도 얘기한다.
4장, ‘클래스와 객체: 확장 기능’에서는 프로그램이 작동하는 데 반드시 필요하지는 않지만 가독성과 표현력을 향상시키는 확장된 객체지향 기능을 다룬다.
5장, ‘표현식: 데이터 작업’에서는 다양한 표현식 유형과 이들 사이의 변환을 살펴본다.
6장, ‘코틀린 파일의 주석’에서는 주석으로 할 수 있는 것을 비롯해 주석을 코틀린 파일에 어떻게 추가하는지 살펴본다.
7장, ‘구조적 구조’에서는 이러한 분기 구조와 함께 코드 작성을 돕는 보조 부류를 살펴본다.
8장, ‘예외: 뭔가 잘못된다면’에서는 예외를 살펴본다. 예외는 예상하지 못한 심각한 문제가 발생한 경우에 생성되거나 던져지는 객체다.
9장, ‘데이터 컨테이너’에서는 컴퓨터 언어 역사에 먼저 등장한 배열부터 살펴보고 컬렉션을 살펴본다.
10장, ‘참, 거짓 그리고 미정: 널 가능성’에서는 true도 false도 아닌 뭔가가 컴퓨터 프로그래밍에 있어야 한다는 사실과 이러한 널 가능성을 배운다.
11장, 동등성 처리’에서는 동일성과 동등성 사이에는 큰 차이가 있으며, 이러한 동일성과 동등성 비교는 중요한 내용을 알려준다는 것을 배운다.
12장, ‘다시 수학으로: 함수형 프로그래밍’에서는 함수형 구조의 지식을 심화하고, 훌륭한 소프트웨어 작성에 필요한 향상된 도구 집합을 배울 수 있다.
13장, ‘타입 안전성에 대해: 제네릭’에서는 제네릭을 자세하게 살펴보고 타입 연관성을 이해해볼 것이다.
14장, ‘힌트 추가: 애너테이션’에서는 코드에 메타 정보를 추가하기 위한 애너테이션을 살펴본다.
15장, ‘자바와 코틀린 API의 사용’에서는 코틀린과 함께 제공되는 라이브러리를 살펴본다.
16장, ‘컬렉션 API’에서는 이미 알고 있는 것을 복습하고 여러 가지 흥미로운 컬렉션 인터페이스, 클래스, 함수를 살펴본다.
17장, ‘다른 API들’에서는 애플리케이션에서 사용할 수 있는 몇 가지 다른 API를 모았다.
18장, ‘병렬 작업: 멀티스레딩’에서 코틀린은 멀티스레딩의 자체 아이디어를 코루틴이라는 기술로 소개하고 있다.
19장, ‘외부 라이브러리 사용하기’에서는 안드로이드 프로젝트에 외부 라이브러리를 추가하는 방법을 얘기하고 외부 자바 라이브러리를 추가할 경우 널 가능성 관련 특성을 탐구하며 자체 라이브러리를 만드는 방법을 설명한다.
20장, ‘XML과 JSON’에서는 코드 스니펫을 테스트할 수 있는 샘플 앱이 있다고 가정한다.
목차
목차
- 1장. 첫 코틀린 애플리케이션: Hello Kotlin
- IDE 설치: 안드로이드 스튜디오
- 안드로이드 디바이스 연결
- 첫 코틀린 앱 시작하기
- 에뮬레이터 설정 및 사용
- HelloKotlin 앱 계속하기
- 커맨드 라인 사용하기
- 2장. 클래스와 객체: 객체지향 철학
- 코틀린과 객체지향 프로그래밍
- 클래스 선언
- 연습문제 1
- 프로퍼티 선언
- 연습문제 2
- 연습문제 3
- 클래스 초기화
- 연습문제 4
- 연습문제 5
- 코틀린에서의 송장
- 다른 송장 프로퍼티
- 송장 초기화
- 연습문제 6
- 코틀린의 인스턴스화
- 송장에 함수 추가하기
- 연습문제 7
- 전체 송장 클래스
- 간단한 숫자 맞추기 게임
- 생성자
- 연습문제 8
- 생성자 호출
- 연습문제 9
- 연습문제 10
- 명명된 생성자 매개변수
- 연습문제 11
- 연습문제 12
- 생성자 기본 값
- 연습문제 13
- 연습문제 14
- 부 생성자
- 연습문제 15
- 클래스가 필요 없다면: 싱글턴 객체
- 연습문제 16
- 연습문제 17
- 상태가 중요하지 않은 경우: 동반자 객체
- 연습문제 18
- 연습문제 19
- 계약 설명: 인터페이스
- 연습문제 20
- 연습문제 21
- 연습문제 22
- 구조화와 패키지
- 구조화된 프로젝트
- 연습문제 23
- 네임스페이스와 임포트
- 연습문제 24
- 코틀린과 객체지향 프로그래밍
- 3장. 클래스의 작동: 프로퍼티와 함수
- 프로퍼티와 프로퍼티의 타입
- 단순 프로퍼티
- 연습문제 1
- 프로퍼티 타입
- 프로퍼티 값 할당
- 연습문제 2
- 리터럴
- 연습문제 3
- 프로퍼티 가시성
- NULL 값
- 연습문제 4
- 프로퍼티 선언 수정자
- 멤버 함수
- 값을 반환하지 않는 함수
- 연습문제 5
- 연습문제 6
- 값을 반환하는 함수
- 연습문제 7
- 연습문제 8
- 연습문제 9
- 마스킹된 프로퍼티에 접근하기
- 연습문제 10
- 함수 호출
- 연습문제 11
- 함수의 명명된 매개변수
- 연습문제 12
- 함수의 기본 매개변수
- 연습문제 13
- 함수의 가변 매개변수
- 연습문제 14
- 추상 함수
- 다형성
- 로컬 함수
- 상속
- 다른 클래스를 상속하는 클래스
- 생성자 상속
- 연습문제 15
- 함수 재정의
- 프로퍼티 재정의
- 연습문제 16
- 연습문제 17
- 수퍼클래스 애셋에 접근하기
- 로컬 변수
- 연습문제 18
- 클래스와 클래스 멤버의 가시성
- 자기 참조: this
- 클래스를 문자열로 변환하기
- 연습문제 19
- 연습문제 19
- 프로퍼티와 프로퍼티의 타입
- 4장. 클래스와 객체: 확장 기능
- 익명 클래스
- 내부 클래스
- 클래스 외부의 함수와 프로퍼티
- 연습문제 1
- 함수와 프로퍼티 임포트
- 연습문제 2
- 데이터 클래스
- 연습문제 3
- 연습문제 4
- 열거형
- 연습문제 5
- 사용자 정의 프로퍼티 접근자
- 연습문제 6
- 연습문제 7
- 연습문제 8
- 코틀린 확장
- 확장 함수
- 확장 프로퍼티
- 널 가능 리시버를 사용하는 확장
- 확장 캡슐화
- 꼬리 재귀를 사용하는 함수
- 이항 연산자
- 연산자 재정의
- 연습문제 9
- 위임
- 5장. 표현식: 데이터 작업
- 표현식 예제
- 표현식의 편재성
- 수치 표현식
- 연습문제 1
- 불리언 표현식
- 문자열과 문자 표현식
- 비트와 바이트
- 다른 연산자
- 연습문제 2
- 변환
- 6장. 코틀린 파일의 주석
- 패키지 주석
- 마크다운
- 클래스 주석
- 함수와 프로퍼티 주석
- 연습문제 1
- 자체 API 문서 생성
- 7장. 구조적 구조
- If와 When
- 레인지
- For와 While 루프
- 스코핑 함수
- apply 함수
- let 함수
- with 함수
- also 함수
- run 함수
- 조건별 실행
- 8장. 예외: 뭔가 잘못된다면
- 코틀린과 예외
- 다른 예외 유형
- 예외 던지기
- 연습문제 1
- 표현식에서의 예외
- 9장. 데이터 컨테이너
- 배열의 정의와 사용
- 배열 인스턴스화
- 연습문제 1
- 연습문제 2
- 배열 작업
- 세트, 리스트 및 맵
- 세트
- 연습문제 3
- 리스트
- 맵
- 페어와 트리플
- 데이터 컨테이너를 이용한 루프
- 배열과 컬렉션 정렬
- 연습문제 4
- 연습문제 5
- 그룹핑, 폴딩, 리듀싱 및 집핑
- 그룹핑
- 연습문제 6
- 폴딩
- 리듀싱
- 연습문제 7
- 집핑
- 연습문제 8
- 배열과 컬렉션의 탐색
- 스프레드 연산자
- 큐와 스택: 데크
- NumberGuess 앱을 위한 통계 클래스
- 앱에 액션 바 추가하기
- 통계 액티비티
- 통계의 상태 관리
- 액티비티 사이의 소통
- 통계 계산 구현
- 10장. 참, 거짓 그리고 미정: 널 가능성
- NULL이란?
- 코틀린 내부에서 널 가능성이 처리되는 방식
- 11장. 동등성 처리
- 코틀린의 동일성
- 코틀린의 동등성
- equals와 해시 코드
- 연습문제 1
- 연습문제 2
- 12장. 다시 수학으로: 함수형 프로그래밍
- 코틀린과 함수형 프로그래밍
- 이름 없는 함수: 람다 함수
- 연습문제 1
- 연습문제 2
- 루프 다시 살펴보기
- 리시버가 있는 함수
- 인라인 함수
- 필터
- 연습문제 3
- 연습문제 3
- 13장. 타입 안전성에 대해: 제네릭
- 단순 제네릭
- 연습문제 1
- 선언 지점 가변성
- 불변 컬렉션에 대한 가변성
- 타입 프로젝션
- 스타 프로젝션
- 제네릭 함수
- 제네릭 제약
- 연습문제 2
- 연습문제 2
- 단순 제네릭
- 14장. 힌트 추가: 애너테이션
- 코틀린의 애너테이션
- 애너테이션의 성질
- 애너테이션 적용하기
- 배열 매개변수를 갖는 애너테이션
- 애너테이션 읽기
- 내장 애너테이션
- 커스텀 애너테이션
- 연습문제 1
- 연습문제 1
- 15장. 자바와 코틀린 API의 사용
- 코틀린과 자바 라이브러리
- 온라인 리소스 사용
- 문서의 로컬 사본 만들기
- 16장. 컬렉션 API
- 인터페이스
- 클래스
- 제너레이터 함수
- 컬렉션과 맵 세터 및 리무버
- 결정적 게터
- 컬렉션과 맵 특성
- 컬렉션과 맵 순회
- 변환
- 연습문제 1
- 연습문제 2
- 연습문제 3
- 연습문제 4
- 필터링
- 연습문제 5
- 가변성 변경하기
- 요소 검사
- 연습문제 6
- 요소 찾기
- 연습문제 7
- 집계, 폴딩 및 리듀싱
- 연습문제 8
- 결합
- 그룹핑
- 집핑
- 윈도잉
- 시퀀스
- 연산자
- 17장. 다른 API들
- 수학 API
- 날짜와 시간 API, API 레벨 25 이하
- 날짜와 시간 API, API 레벨 26 이상
- 로컬 날짜와 시간
- 인스턴트
- 오프셋 날짜와 시간
- 구역 날짜와 시간
- 듀레이션과 피리어드
- 클락
- 연습문제 1
- 입력과 출력
- 테스트 파일 만들기
- 파일 이름
- 디렉터리 나열
- 파일에 쓰기
- 파일에서 읽기
- 파일 삭제
- 임시 파일 다루기
- 다른 파일 작업
- URL 읽기
- 리플렉션 사용
- 정규 표현식
- 패턴
- 일치 확인
- 연습문제 2
- 문자열 자르기
- 하위 문자열 추출하기
- 대치
- 18장. 병렬 작업: 멀티스레딩
- 자바 멀티스레딩 기초
- 자바의 고급 멀티스레딩
- 특수한 동시성 컬렉션
- 잠금
- 원자적 변수 타입
- 익스큐터, 퓨처 및 콜러블
- 연습문제 1
- 코틀린 코루틴
- 기본 코루틴
- 코루틴 컨텍스트
- delay( )가 하는 일
- 일시 중단 함수란?
- 잡 기다리기
- 코루틴 취소하기
- 타임아웃
- 디스패처
- 예외 처리
- 연습문제 2
- 연습문제 2
- 19장. 외부 라이브러리 사용하기
- 외부 라이브러리 추가하기
- 의존성 관리
- 미해결 로컬 의존성
- 외부 라이브러리와 널 가능성
- 자체 라이브러리 만들기
- 20장. XML과 JSON
- XML 처리
- XML 데이터 읽기
- XML 데이터 변경
- 새로운 DOM 생성
- 연습문제 1
- JSON 처리
- JSON 헬퍼 함수
- JSON 데이터 읽고 쓰기
- 새로운 JSON 트리 생성
- 연습문제 2
- 연습문제 2
도서 오류 신고
정오표
정오표
안드로이드 스튜디오 버전에 따라 예제가 제대로 실행되지 않는 경우 아래 내용 참고해 수정 후 실행해주시면 감사하겠습니다.
android.support.constraint.ConstraintLayout 오류
activity_main.xml의 android.support.constraint.ConstraintLayout를 androidx.constraintlayout.widget.ConstraintLayout으로 변경
android.support.v7.app.AppCompatActivity 오류
android.support.v7.app.AppCompatActivity
->
import androidx.appcompat.app.AppCompatActivity
android.support.v7.widget.Toolbar 오류
android.support.v7.widget.Toolbar
->
androidx.appcompat.widget.Toolbar
android.support.design.widget.CoordinatorLayout 오류
android.support.design.widget.CoordinatorLayout
->
androidx.coordinatorlayout.widget.CoordinatorLayout
android.support.design.widget.AppBarLayout 오류
budil.gradle에 implementation 'com.google.android.material:material:1.0.0'를 추가한 다음 android.support.design.widget.AppBarLayout을 com.google.android.material.appbar.AppBarLayout으로 변경
272페이지 오버라이드 메서드 추가
override
fun onOptionsItemSelected(item: MenuItem): Boolean {
openStatistics()
return super.onOptionsItemSelected(item)
}