logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

핵심 코틀린 프로그래밍

핵심 코틀린 프로그래밍

(기초를 단단히 다져주는 코틀린 입문서)

오현석 (지은이)
  |  
에이콘출판
2023-04-28
  |  
45,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
알라딘 40,500원 -10% 0원 2,250원 38,250원 >
yes24 로딩중
교보문고 로딩중
영풍문고 로딩중
인터파크 로딩중
11st 로딩중
G마켓 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
로딩중

e-Book

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
로딩중

책 이미지

핵심 코틀린 프로그래밍

책 정보

· 제목 : 핵심 코틀린 프로그래밍 (기초를 단단히 다져주는 코틀린 입문서)
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 언어 > 프로그래밍 언어 기타
· ISBN : 9791161757476
· 쪽수 : 676쪽

책 소개

1부에서는 코틀린 프로그램에 필요한 필수적인 기본 요소를 설명하며, 이를 통해 너무 복잡한 개념을 이해하기 위해 고생하지 않고 기본적인 코틀린 언어를 배울 수 있다. 2부에서는 코틀린이 제공하는 다양한 문법 설탕이나 고급 기능을 설명하면서 각 기능이 어떤 역할을 하는지 보여준다.

목차

1장. 코틀린 시작하기
__1.1 간략한 역사
__1.2 코틀린 언어의 특징
__1.3 코틀린 개발 환경과 설치 및 사용 방법
____1.3.1 웹 도구
____1.3.2 IDE: 인텔리J 아이디어
____1.3.3 명령줄 도구: kotlinc와 kotlin


제1부 코틀린 퀵스타트


2장. 프로그램을 이루는 기본 단위: 변수와 식, 문
__2.1 가장 간단한 코틀린 프로그램
__2.2 주석
__2.3 값과 이름, 리터럴과 변수
__2.4 타입과 타입 지정, 타입 추론, 타입 변환
__2.5 if, when
__2.6 범위와 for
__2.7 while과 do while
__2.8 break와 continue
__2.9 식과 연산자
__2.10 배열
____2.10.1 배열 선언하기
____2.10.2 배열을 생성하는 다른 방법
____2.10.3 원시 타입 배열과 참조 타입 배열
____2.10.4 배열 기본 연산
__2.11 연습문제


3장. 함수
__3.1 함수
____3.1.1 Unit 타입
__3.2 지역 변수와 지역 함수, 정적 영역 규칙
____3.2.1 정적 영역 규칙
__3.3 익명 함수와 람다
____3.3.1 익명 함수나 람다와 관련된 편의 구문
__3.4 클로저와 값 포획
__3.5 다양한 파라미터 정의 방법
____3.5.1 디폴트 파라미터
____3.5.2 이름 붙은 인자
____3.5.3 가변 길이 인자와 스프레드 연산자
__3.6 연습문제


4장. 클래스와 객체
__4.1 클래스
____4.1.1 생성자에서 클래스 프로퍼티 정의하기
____4.1.2 객체와 참조
____4.1.3 객체의 동일성과 동등성
____4.1.4 초기화 블록
__4.2 상속
____4.2.1 멤버의 상속 관계 제어: override, open, final
____4.2.2 상속의 활용: 오버라이드를 통한 세분화와 동적 디스패치
____4.2.3 Any와 equals(), hashCode(), toString()
____4.2.4 is와 as, 스마트 캐스트
__4.3 추상 클래스
__4.4 인터페이스
____4.4.1 인스턴스 정의와 상속하기
____4.4.2 인터페이스 오버라이드 규칙
__4.5 프로퍼티 정의하기: 게터, 세터, 뒷받침하는 필드
____4.5.1 뒷받침하는 필드
____4.5.2 뒷받침하는 필드가 없는 경우
____4.5.3 지연 초기화 프로퍼티
____4.5.4 프로퍼티 게터와 인자가 없는 함수 중 어느 것을 사용해야 할까?
__4.6 연습문제


5장. 예외 처리
__5.1 예외 던지기
____5.1.1 예외 타입 선언하기
____5.1.2 다양한 예외 타입
__5.2 예외 받기: catch
____5.2.1 예외 다시 던지기와 예외 변환해 던지기
____5.2.2 try/catch 식
____5.2.3 Nothing 타입
__5.3 정리 작업: finally
____5.3.1 자원 자동 해제를 처리하는 더 나은 방법
__5.4 연습문제


6장. 제네릭스
__6.1 제네릭스의 필요성
__6.2 코틀린 제네릭스 문법
__6.3 타입 바운드
____6.3.1 재귀적 타입 바운드
____6.3.2 다중 바운드: where
__6.4 선언 지점 변성: in, out
____6.4.1 공변성
____6.4.2 반공변성
____6.4.3 무공변
____6.4.4 반공변성과 공변성은 어디서 오는가?
____6.4.5 둘 이상의 타입 파라미터가 있는 제네릭 타입의 변성 판정
____6.4.6 선언 지점 변성과 사용 지점 변성, 타입 프로젝션
__6.5 연습문제


7장. 널 가능성
__7.1 널 도입과 널 가능성의 필요성
____7.1.1 제네릭 타입 파라미터에서의 널 가능성
__7.2 널이 될 수 있는 타입과 그렇지 않은 타입
__7.3 널 여부 검사와 스마트 캐스트
____7.3.1 널 가능성에 대한 스마트 캐스트와 Nothing 타입
____7.3.2 널이 될 수 있는 타입의 값과 is, as 연산
__7.4 엘비스 연산자와 안전한 호출 연산자
__7.5 널 아님 단언 연산자
__7.6 연습문제


8장. 패키지와 임포트
__8.1 패키지와 임포트
____8.1.1 패키지 선언
____8.1.2 전체 이름과 짧은 이름, 임포트
__8.2 임포트 이름 충돌과 임포트 별명
__8.3 디폴트 임포트
__8.4 연습문제


9장. 코틀린 컬렉션 기초
__9.1 컬렉션 소개
____9.1.1 컬렉션이 제공하는 연산의 분류
__9.2 Iterable<>과 Collection<>
____9.2.1 Iterable<>
____9.2.2 Collection<>
____9.2.3 MutableIterable<>과 MutableCollection<>
____9.2.4 forEach(), forEachIndexed()
__9.3 컬렉션 종류에 따른 생성, 원소 접근, 삽입, 삭제 방법
____9.3.1 리스트
____9.3.2 집합
____9.3.3 맵
__9.4 컬렉션 검색과 걸러내기 연산
____9.4.1 filter(), filterNot()
____9.4.2 filterIndexed()
____9.4.3 filterNotNull()
____9.4.4 indexOf(), lastIndexOf(), indexOfFirst(), indexOfLast()
__9.5 컬렉션 변환 연산
____9.5.1 map(), mapNotNull()
____9.5.2 flatten()
____9.5.3 flatMap()
____9.5.4 mapIndexed()와 flatMapIndexed()
__9.6 컬렉션 종합 연산
____9.6.1 합계 연산: sum(), sumOf()
____9.6.2 축약 연산: reduce(), reduceIndexed(), reduceIndexedNull()
____9.6.3 오른쪽 축약 연산: reduceRight()와 reduceRightIndexed()
____9.6.4 접기 연산: fold(), foldIndexed(), foldRight(), foldRightIndexed()
____9.6.5 문자열 변환 연산
__9.7 컬렉션 전체 변환 연산
____9.7.1 리스트 변환: toList(), toMutableList()
____9.7.2 배열 변환: toTypedArray()
____9.7.3 집합 변환: toSet()
____9.7.4 맵 변환: toMap(), toMutableMap()
__9.8 기타 연산
____9.8.1 정렬
__9.9 연습문제


제2부


10장. 변수 선언과 기본 타입 자세히 살펴보기
__10.1 기본 데이터 타입
____10.1.1 정수형 기본 타입
____10.1.2 실수형 기본 타입
____10.1.3 Boolean 타입
____10.1.4 Char 타입
__10.2 변수 이름
____10.2.1 이름 규칙과 이름 충돌
____10.2.2 lateinit 변수
____10.2.3 const val
__10.3 연산자와 연산자 우선순위
____10.3.1 산술 연산자
____10.3.2 수 타입 간의 타입 변환
____10.3.3 복합 대입 연산
____10.3.4 증가/감소 연산
____10.3.5 비교 연산과 불린 연산
____10.3.6 비트 연산과 시프트 연산
____10.3.7 비트 연산과 부호 없는 타입
____10.3.8 수학 연산
____10.3.9 연산자 우선순위
__10.4 (JVM) 문자열
____10.4.1 로우 문자열
____10.4.2 문자열 템플릿
____10.4.3 문자열 조작
__10.5 연습문제


11장. 제어 구조 자세히 살펴보기
__11.1 if 식과 Nothing 타입
__11.2 for 루프와 이터레이터의 관계: 관습에 기반한 언어 기능 제공
__11.3 범위와 순열
____11.3.1 범위
____11.3.2 순열
__11.4 break, continue와 레이블
__11.5 연습문제


12장. 함수 자세히 살펴보기
__12.1 operator 키워드와 연산자 오버로드
____12.1.1 단항 연산자 오버로드
____12.1.2 단항 증가/감소 연산자 오버로드
____12.1.3 이항 산술 연산자 오버로드
____12.1.4 이항 멤버십 연산자 오버로드
____12.1.5 인덱스 연산자 오버로드
____12.1.6 동등성 연산자 오버로드
____12.1.7 비교 연산자 오버로드
____12.1.8 복합 연산자 오버로드
____12.1.9 호출 연산자 오버로드
____12.1.10 멤버 함수를 중위 형식으로 쓸 수 있는 경우
____12.1.11 구조 분해와 componentN() 연산자 함수
__12.2 확장 함수와 확장 프로퍼티
____12.2.1 확장 함수는 정적으로 디스패치됨
____12.2.2 널이 될 수 있는 타입에 대한 확장 함수
____12.2.3 확장 프로퍼티
____12.2.4 클래스 멤버로 확장 정의
____12.2.5 함수와 프로퍼티에 대한 참조
____12.2.6 함수 참조의 타입
____12.2.7 수신 객체 지정 람다와 수신 객체 지정 익명 함수
____12.2.8 이름은 같고 파라미터만 다른 확장
__12.3 함수 오버로드 해결
____12.3.1 어떤 요소를 호출할 수 있을까?
____12.3.2 오버로드 후보 집합
____12.3.3 가장 구체적인 함수를 정하기
__12.4 영역 규칙 다시 보기: 디폴트 파라미터, 재귀
____12.4.1 디폴트 파라미터에서 다른 파라미터 이름 사용하기
____12.4.2 재귀 호출과 꼬리 재귀
__12.5 인라인 함수
____12.5.1 고차 함수 파라미터로 전달된 람다의 인라이닝
____12.5.2 지역 return과 비지역 return
____12.5.3 inline에서 인라인된 람다의 전달
____12.5.4 noline과 crossinline
____12.5.5 인라인 프로퍼티와 인라인 확장
____12.5.6 reified
____12.5.7 공개된 인라인 함수의 제약 사항
__12.6 연습문제


13장. 객체지향 자세히 살펴보기
__13.1 내포 클래스와 내부 클래스
____13.1.1 내포 클래스
____13.1.2 내부 클래스
____13.1.3 클래스 안에 내포시킬 수 있는 대상
____13.1.4 인터페이스 안에 내포시킬 수 있는 대상
__13.2 object로 싱글턴 객체 선언하기
____13.2.1 익명 객체
____13.2.2 객체가 다른 클래스나 인터페이스 상속하기
____13.2.3 fun interface 선언과 람다를 사용한 익명 객체 선언
____13.2.4 동반 객체
__13.3 데이터 클래스
____13.3.1 데이터 타입 정의 제약 사항
____13.3.2 copy()를 통한 객체 복사
____13.3.3 데이터 클래스 본문에 정의된 프로퍼티
____13.3.4 데이터 클래스의 상속
____13.3.5 조언: 데이터 클래스는 불변 객체로만 사용하라
__13.4 이넘 클래스로 여러 상수값 정의하기
____13.4.1 이넘 클래스에 정의된 멤버 함수나 프로퍼티
____13.4.2 이넘 상수: 싱글턴 객체
__13.5 값 클래스를 통해 타입 안전성과 성능 동시에 얻기
__13.6 봉인된 클래스나 봉인된 인터페이스를 통해 클래스 계층 제한하기
__13.7 부생성자
____13.7.1 주생성자가 없는 경우 부생성자
__13.8 가시성 변경자
____13.8.1 클래스나 객체에 선언된 이름의 가시성
____13.8.2 패키지 최상위에 선언되는 이름의 가시성
__13.9 위임을 통해 구현을 다른 객체에 미루기
____13.9.1 인터페이스 구현 위임
____13.9.2 프로퍼티 위임
____13.9.3 코틀린이 기본 제공하는 위임
____13.9.4 getValue()와 setValue() 규칙
____13.9.5 위임 프로퍼티 컴파일 방법
____13.9.6 operator fun provideDelegate()
__13.10 타입 별명
__13.11 연습문제


14장. 제네릭스 2
__14.1 스타 프로젝션
__14.2 타입 소거(JVM)와 reified
____14.2.1 타입 소거
____14.2.2 reified: 실체화한 타입
__14.3 영역 함수
____14.3.1 let
____14.3.2 run 일반 함수와 run 확장 함수
____14.3.3 with()
____14.3.4 also()
____14.3.5 apply()
____14.3.6 takeIf()와 takeUnless()
____14.3.7 코틀린 공식 문서의 영역 함수 공식 가이드
__14.4 연습문제


15장. 컬렉션 2
__15.1 두 컬렉션을 쌍으로 연결하기, 연결을 풀어 두 컬렉션 만들기: zip(), unzip(), zipWithNext()
__15.2 컬렉션을 조건에 따라 둘로 나누기: partition()
__15.3 fold()나 reduce()의 진행 단계를 리스트로 돌려받기: runningFold(), runningFoldIndexed(), runningReduce(), runningReduceIndexed()
____15.3.1 runningFold(), runningFoldIndexed()의 별명: scan()과 scanIndexed()
__15.4 원소 선택과 제외: take(), drop(), takeLast(), dropLast(), takeWhile(), dropWhile(), takeLastWhile(), dropLastWhile()
____15.4.1 개수로 선택하거나 제외하기: take(), drop(), takeLast(), dropLast()
____15.4.2 앞에서부터 조건에 맞는 원소를 찾거나 제거하기: takeWhile(), dropWhile(), takeLastWhile(), dropLastWhile()
__15.5 슬라이딩 윈도우와 덩어리로 나누기: windowed(), chunked()
__15.6 값 연관시키기: associate(), associateBy(), associateByTo(), associateTo(), associateWith(), associateWithTo()
____15.6.1 associate()와 associateTo()
____15.6.2 associateBy()와 associateByTo()
____15.6.3 associateWith()와 associateWithTo()
__15.7 키에 따라 그룹으로 나누기: groupBy(), groupByTo()
__15.8 그룹을 처리하기 위한 Grouping 객체 얻기: groupingBy()
____15.8.1 키 셀렉터로 그루핑 만들기: groupingBy()
____15.8.2 그룹별 멤버 개수 세기: eachCount()
____15.8.3 그룹별로 reduce()한 결과를 키와 연관시키기: reduce()
____15.8.4 그룹별로 fold()한 결과를 키에 연관시키기: aggregate()
____15.8.5 그룹별로 누적 연산을 적용한 결과를 키에 연관시키기: aggregate()
__15.9 조건을 만족하는 원소 검사: none(), any(), all()
__15.10 컬렉션에 대한 집합 연산: intersect(), union(), minus()
____15.10.1 컬렉션에 원소를 덧붙이거나 컬렉션에서 원소를 제거하는 연산: plusElement(), minusElement()
__15.11 뒤섞기 연산: shuffled()
__15.12 배열 연산
____15.12.1 배열 비교: contentEquals(), contentDeepEauals()
____15.12.2 배열의 내용 복사: copyOf(), copyOfRange(), copyInto()
____15.12.3 배열에 값 채워 넣기: fill()
____15.12.4 뒤섞기 연산: shuffle()
__15.13 시퀀스
____15.13.1 시퀀스 만들기: asSequence(), generateSequence(), sequence()
__15.14 연습문제


마무리: 다음에 공부할 내용과 전체 돌아보기

저자소개

오현석 (지은이)    정보 더보기
모빌리티42 이사로 일하면서 매일 고객의 요청에 따라 코드를 만드는 현업 개발자다. 어릴 때 처음 컴퓨터를 접하고 매혹된 후 경기과학고, KAIST 전산학과(프로그래밍 언어 전공 석사)를 거치면 서 계속 컴퓨터를 사용해왔다. 직장에서는 주로 코틀린이나 자바를 사용한 서버 프로그래밍을 하고, 주말이나 여가 시간에는 번역을 하거나 공부를 하면서 즐거움을 찾는다. 시간이 아주 많이 남 을 때는 시뮬레이션 게임을 즐기면서 머리를 식히고, 어떻게 하 면 막내 자식을 프로그래밍의 세계로 끌어들일 수 있을지를 고 민하는 아빠이기도 하다. 『코어 파이썬 애플리케이션 프로그래밍』(에이콘, 2014)을 시작으로 『코틀린 함수형 프로그래밍』(에이콘, 2023), 『아토믹 코틀린』(길벗, 2023), 『코딩 좀 아는 사람』(윌북, 2023) 등 30여 권의 책을 번역했다.
펼치기
이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책