장바구니 담기 close

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

코틀린 안드로이드 프로그래밍

코틀린 안드로이드 프로그래밍

  • 피터슈패스
  • |
  • 에이콘출판
  • |
  • 2021-10-29 출간
  • |
  • 544페이지
  • |
  • 188 X 235 X 26 mm
  • |
  • ISBN 9791161755793
판매가

35,000원

즉시할인가

31,500

배송비

무료배송

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

수량
+ -
총주문금액
31,500

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

출판사서평




◈ 이 책에서 다루는 내용 ◈

◆ 안드로이드에서 실행되는 첫 코틀린 앱 제작
◆ 안드로이드 개발에 코틀린 클래스와 객체 사용
◆ 구조, 루프, 결정 및 스코프 사용
◆ 데이터 작업 수행
◆ 데이터 컨테이너, 배열 및 컬렉션 마스터
◆ 예외 처리와 외부 라이브러리 사용

◈ 이 책의 대상 독자 ◈

프로그래밍 지식이 거의 없는 초보 소프트웨어 개발자, 향후 안드로이드 프로젝트에 코틀린을 사용하려는 다른 언어 지식이 있는 개발자를 위한 책이다. 대상 플랫폼은 안드로이드 디바이스다. 안드로이드를 플랫폼으로 사용하고 코틀린 프로그래밍 언어와 코틀린이 안드로이드에 사용되는 방법을 철저하게 소개한다.
프로그램 설치 및 시작을 포함해 데스크톱이나 랩톱 컴퓨터를 사용하는 방법의 기본 지식이 필요하다. 사용하려는 운영 체제는 중요한 역할을 하지 않지만, 안드로이드 스튜디오를 개발 환경으로 사용하므로 이 통합 개발 환경(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’에서는 코드 스니펫을 테스트할 수 있는 샘플 앱이 있다고 가정한다.

◈ 지은이의 말 ◈

컴퓨터 프로그램은 입력 데이터를 사용해 출력 데이터를 생성하는 작업을 실행하고 때로는 해당 작업을 할 때 데이터베이스에서 가져온 데이터를 조작하기도 한다. ‘데이터베이스’라는 단어는 가장 일반적인 의미로 사용된다. 이는 파일이 될 수도 있고 메모리 스토리지나 완전한 데이터베이스 제품일 수도 있다.
오늘날에는 각각 자신만의 장점과 단점을 가진 여러 프로그래밍 언어가 존재한다. 일부는 안정적인 실행을 목표로 하고, 일부는 고성능, 어떠한 것은 특정 작업을 해결하기 위해 만들어졌으며 일부는 회사가 강력한 시장 입지를 구축하길 원하기 때문에 존재한다. 프로그래밍 언어가 시간이 지나면서 발전한 방식을 살펴보는 것은 그 자체로 흥미로운 주제이며, 정보기술의 다양한 측면에 영향을 미친다. 누군가는 이에 대해 별도의 책을 쓸 수도 있겠지만 이 책에서는 단지 컴퓨터 언어 발달에 대한 한 가지 중요한 사실을 강조하려고 한다. 이는 현대 컴퓨터 프로그램이 작성되는 방식에 직접적인 영향을 미친다. 컴퓨터 언어의 역사적 발전을 살펴보면 언어가 나타내는 추상화 수준에 상당한 변화가 있음을 발견할 수 있다. 업계 초기에는 프로그래머가 컴퓨터 하드웨어를 매우 잘 알고 있어야 했지만 이제는 언어에 다른 수준의 추상화가 도입돼 하드웨어 기능으로부터 개념적이고 언어적인 거리가 멀어졌다. 이로 인해 소프트웨어 개발자는 컴퓨터의 중앙처리장치(CPU)에서 무슨 일이 일어나고 있는지 알아야 한다는 사항이 점점 완화됐다.
이 책의 끝에 도달하면 안드로이드 문제에 특히 관심을 갖고 코틀린 언어로 문제를 해결할 수 있는 발전된 개발자가 돼야 한다. 물론 특정 문제를 해결하기 위해 라이브러리를 전부 알 수는 없다. 이때는 오직 경험만 도움이 된다. 하지만 대부분의 언어 구조를 알고 프로그래밍 기술에 대한 좋은 아이디어를 가지면 전문적인 안드로이드 프로그래머가 될 수 있다.

◈ 옮긴이의 말 ◈

코틀린이라는 언어를 처음 접하고 사용한 지 벌써 3년이 돼 간다. 여러 큰 회사에서 코틀린으로 만든 애플리케이션으로 서비스를 제공하고 운영해왔다. 3년이 지난 지금도 여전하게 코틀린을 사용 중이고 코틀린을 사용하지 않는 회사로 이직한 경우 코틀린을 왜 사용해야 하는지 기존 구성원을 설득해 전환시켰던 경험이 있다.
프로그래밍 언어의 인기는 곧 신뢰성과 결부되므로 개발자에게 인기는 중요할 수밖에 없다. 현재의 코틀린은 인기가 많이 높아진 것 같다. 안드로이드뿐만 아니라 서버 애플리케이션 개발에도 활발하게 쓰이기 때문인지 기존 구성원을 설득하는 것은 별로 어렵지 않았다. 그렇다면 그 이후 개발자가 느끼는 코틀린은 어땠을까? 설문조사나 통계 작성을 해본 것은 아니지만 잠시 커피 한 잔을 하면서 코틀린에 대한 경험을 말할 때는 왜 이런 언어를 쓰는지에 대한 얘기는 적어도 나오지 않았다. 혹자는 이제 자바 언어가 매우 낯설고 장황하게 느껴진다고 말하기도 한다.
개인적으로 코틀린은 자바 대체 언어로 사용하기에 매우 훌륭한 선택이라고 생각한다. 다른 모던 언어에서 찾아볼 수 있는 기능이 과하지 않을 만큼 코틀린이라는 언어 속에 녹아 있다. 좋은 부분만 잘 수용했다고 할까? 개발자는 코드를 더 간결하게 작성할 수 있고 코드를 자바로 작성하는 것보다 생산성이 더 향상될 수 있다고 생각한다. 코틀린은 사용해봐야만 그 장점을 확실하게 느낄 수 있는 언어다. 이 책을 읽는 독자 여러분도 코틀린의 매력에 푹 빠지길 바란다.


목차


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


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


13장. 타입 안전성에 대해: 제네릭
__단순 제네릭
____연습문제 1
__선언 지점 가변성
__불변 컬렉션에 대한 가변성
__타입 프로젝션
__스타 프로젝션
__제네릭 함수
__제네릭 제약
____연습문제 2


14장. 힌트 추가: 애너테이션
__코틀린의 애너테이션
__애너테이션의 성질
__애너테이션 적용하기
__배열 매개변수를 갖는 애너테이션
__애너테이션 읽기
__내장 애너테이션
__커스텀 애너테이션
____연습문제 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


19장. 외부 라이브러리 사용하기
__외부 라이브러리 추가하기
__의존성 관리
__미해결 로컬 의존성
__외부 라이브러리와 널 가능성
__자체 라이브러리 만들기


20장. XML과 JSON
__XML 처리
__XML 데이터 읽기
__XML 데이터 변경
__새로운 DOM 생성
____연습문제 1
__JSON 처리
__JSON 헬퍼 함수
__JSON 데이터 읽고 쓰기
__새로운 JSON 트리 생성
____연습문제 2


부록. 연습문제 답안
__2장
__3장
__4장
__5장
__6장
__8장
__9장
__11장
__12장
__13장
__14장
__16장
__17장
__18장
__20장

교환 및 환불안내

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