핵심 코틀린 프로그래밍 (기초를 단단히 다져주는 코틀린 입문서)

핵심 코틀린 프로그래밍 (기초를 단단히 다져주는 코틀린 입문서)

$46.34
Description
1부에서는 코틀린 프로그램에 필요한 필수적인 기본 요소를 설명하며, 이를 통해 너무 복잡한 개념을 이해하기 위해 고생하지 않고 기본적인 코틀린 언어를 배울 수 있다. 2부에서는 코틀린이 제공하는 다양한 문법 설탕이나 고급 기능을 설명하면서 각 기능이 어떤 역할을 하는지 보여준다. 그 과정에서 객체지향, 함수형 프로그래밍, 제네릭스, 컬렉션을 더 잘 이해하고, 코드 작성시 코틀린의 다양한 기능을 적재적소에 활용할 수 있게 해준다. 또한 코틀린 언어의 여러 요소를 언어 명세 수준으로 설명하고 있어 책을 다 읽은 후에도 참고서로 활용할 수 있을 것이다.
저자

오현석

모빌리티42이사로일하면서매일고객의요청에따라코드를만드는현업개발자다.어릴때처음컴퓨터를접하고매혹된후경기과학고,KAIST전산학과(프로그래밍언어전공석사)를거치면서계속컴퓨터를사용해왔다.
직장에서는주로코틀린이나자바를사용한서버프로그래밍을하고,주말이나여가시간에는번역을하거나공부를하면서즐거움을찾는다.시간이아주많이남을때는시뮬레이션게임을즐기면서머리를식히고,어떻게하면막내자식을프로그래밍의세계로끌어들일수있을지를고민하는아빠이기도하다.
『코어파이썬애플리케이션프로그래밍』(에이콘,2014)을시작으로『KotlininAction』(에이콘,2017),『아토믹코틀린』(길벗,2023),『코딩좀아는사람』(윌북,2023)등30여권의책을번역했다.

목차

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

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

3장.함수
__3.1함수
____3.1.1Unit타입
__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.3Any와equals(),hashCode(),toString()
____4.2.4is와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.2try/catch식
____5.2.3Nothing타입
__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.2Iterable〈〉과Collection〈〉
____9.2.1Iterable〈〉
____9.2.2Collection〈〉
____9.2.3MutableIterable〈〉과MutableCollection〈〉
____9.2.4forEach(),forEachIndexed()
__9.3컬렉션종류에따른생성,원소접근,삽입,삭제방법
____9.3.1리스트
____9.3.2집합
____9.3.3맵
__9.4컬렉션검색과걸러내기연산
____9.4.1filter(),filterNot()
____9.4.2filterIndexed()
____9.4.3filterNotNull()
____9.4.4indexOf(),lastIndexOf(),indexOfFirst(),indexOfLast()
__9.5컬렉션변환연산
____9.5.1map(),mapNotNull()
____9.5.2flatten()
____9.5.3flatMap()
____9.5.4mapIndexed()와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.3Boolean타입
____10.1.4Char타입
__10.2변수이름
____10.2.1이름규칙과이름충돌
____10.2.2lateinit변수
____10.2.3constval
__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.1if식과Nothing타입
__11.2for루프와이터레이터의관계:관습에기반한언어기능제공
__11.3범위와순열
____11.3.1범위
____11.3.2순열
__11.4break,continue와레이블
__11.5연습문제

12장.함수자세히살펴보기
__12.1operator키워드와연산자오버로드
____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.3inline에서인라인된람다의전달
____12.5.4noline과crossinline
____12.5.5인라인프로퍼티와인라인확장
____12.5.6reified
____12.5.7공개된인라인함수의제약사항
__12.6연습문제

13장.객체지향자세히살펴보기
__13.1내포클래스와내부클래스
____13.1.1내포클래스
____13.1.2내부클래스
____13.1.3클래스안에내포시킬수있는대상
____13.1.4인터페이스안에내포시킬수있는대상
__13.2obj

출판사 서평

◈이책에서다루는내용◈
◆코틀린언어를꼭필요한기초적인내용과기초위에쌓아올려야하는지식으로나눠설명
◆함수오버로드처리규칙등코틀린언어의미묘한세부사항을언어명세를참조해자세히설명
◆형식화문자열등실무에서필요한내용을설명
◆자세한컬렉션라이브러리함수설명과예제
◆2023년코틀린최신버전(1.8)대응

◈이책의대상독자◈
◆코틀린을자세히알고싶은프로그래머
◆코틀린을배웠지만기초를더다지고싶은코틀린프로그래머
◆코틀린언어자체가궁금할때찾아볼수있는참고서가필요한개발자

◈이책의구성◈
1장,‘코틀린시작하기’에서는우선코틀린언어의개요를소개하고개발환경을설정하는방법을설명한다.이어지는1부,‘코틀린퀵스타트’에서는코틀린언어요소중프로그램을작성할때꼭필요한필수개념을다룬다.1부를잘읽고언어기본요소를이해해야만코틀린코드를작성할수있고2부내용을학습하기위한준비를마칠수있다.1부의각장은다음과같다.
2장,‘프로그램을이루는기본단위:변수와식,문’에서는코틀린프로그램의기본요소를이루는식,값,타입,변수와기본제어구조인if,when,for,while,do...while,break,continue를다룬다.
3장,‘함수’에서는함수,지역변수및지역함수,영역규칙,익명함수,람다,클로저를다루고,다양한파라미터지정방법을설명한다.
4장,‘클래스와객체’에서는객체지향의기초를다룬다.클래스,상속,추상클래스,인터페이스,프로퍼티를설명한다.
5장,‘예외처리’에서는예외처리를다룬다.프로그램에서실패를처리하는방법을설명하고,코틀린의예외처리방법인try,catch,finally를설명한다.또한use()멤버함수를사용해자동해제가가능한타입을활용하는방법도다룬다.
6장,‘제네릭스’에서는타입을파라미터로받아새로운타입(클래스/인터페이스)이나함수를만들어내는방법인제네릭스를살펴본다.제네릭스의개념,코틀린에서타입파라미터가포함된클래스,인터페이스,함수를선언하는방법,타입바운드,선언지점변성,사용지점변성을설명한다.
7장,‘널가능성’에서는널가능성을코틀린에서처리하는방법을다룬다.널가능성이왜필요한지살펴보고,널이될수있는타입,스마트캐스트,is및as연산,엘비스연산자(?:),안전한호출연산자(?.),널아님단언연산자(!!)를설명한다.
8장,‘패키지와임포트’에서는패키지를선언하는방법과패키지멤버를임포트해사용하는방법,임포트시새로운이름을지정해이름충돌을막는방법을소개한다.코틀린이기본적으로임포트해줘서별도로임포트하지않아도되는패키지들도설명한다.
9장,‘코틀린컬렉션기초’에서는코틀린으로개발을진행할때가장자주접하게될기초라이브러리인코틀린컬렉션을설명한다.
10장,‘변수선언과기본타입자세히살펴보기’에서는기본타입을자세히살펴보고,문자열이스케이프,유니코드,변수이름충돌을설명한다.그후lateinitvar와constval,연산자우선순위와함께모든코틀린연산자를상세히다룬다.마지막으로는로우(raw)문자열과문자열조작함수를설명한다.
11장,‘제어구조자세히살펴보기’에서는제어구조를더자세히다루고,범위와순열을설명한후break와continue에서레이블을사용하는방법을살펴본다.
12장,‘함수자세히살펴보기’에서는함수와관련된더자세한내용을살펴본다.코틀린연산자가어떤연산자함수와연결되는지자세히설명하고,확장함수와프로퍼티를살펴본다.이어서함수오버로드해소규칙을설명하고(다소어려운내용이다),파라미터에서코틀린영역규칙이적용되는방식과재귀함수및꼬리재귀함수를정의하는방법을다룬다.마지막으로는인라인함수를설명한다.
13장,‘객체지향자세히살펴보기’에서는객체지향과관련해코틀린이제공하는여러가지기능을살펴본다.object를사용해싱글턴객체를선언하는방법,동반객체,데이터클래스,이넘클래스,값클래스(또는인라인클래스),봉인된클래스,부생성자,가시성지정자,인터페이스구현위임과프로퍼티위임,타입별명을설명한다.
14장,‘제네릭스2’에서는스타프로젝션,타입소거,reified타입파라미터를설명하고,영역함수를다룬다.
15장,‘컬렉션2’에서는9장에서배운여러컬렉션이공통으로제공하는다양한함수를유형별로설명한다.9장에서다룬함수들외에zip(),partition(),take(),drop(),windowed(),chunked(),associate(),groupBy()등을설명하고groupBy()와관련있는Grouping클래스를살펴본다음,fold(),groupBy()등을한꺼번에처리할수있는더일반적인함수인aggregate()와그외여러가지함수를설명한다.마지막으로는컬렉션을지연처리할수있는시퀀스를살펴본다.
각장에서개념을설명하고난후에는직전에배운내용을간단하게스스로검토해보도록익힘문제를제시하며,각장의끝에는해당장의내용을정리하는데도움이되는연습문제가있다.이문제들을풀면서배운내용을정리하고내재화하길바란다.