개발자의 서재

초보자를 위한 코틀린 200제(Kotlin)- 엄민석 저, 정보문화사

지구빵집 2022. 2. 22. 11:49
반응형

 

 

설명만 제대로 잘 해주면 이런 종류의 책은 진도도 빨리 나가고 아주 빨리 프로그래밍 언어를 배울 수 있다. 예제 코드를 재빨리 읽을 수 있다면 언어는 이미 이해하고 있다는 뜻이다. 읽을 줄 알면 쓰기는 금방 배울 수 있는 것처럼 말이다. 코드는 자체로 자기 기능과 역할을 드러낸다. 설명이 필요한 코드는 잘 만든 코드라 볼 수 없다. 스스로 무엇을 하는 지 애써 설명하지 않아도 다른 사람이 쉽게 이해할 수 있는 코드를 짠다.

 

소스코드를 옮기면서 설명을 붙여보기로 하자. 프로그램 테스트는 간단히 앱에서 코틀린 프로그램을 작성, 실행할 수 있는 코틀린 플레이그라운드를 이용한다. 

 

 

초보자를 위한 코틀린 200제(Kotlin)

 

 

PART 1 입문// 코틀린 기초 문법 살펴보기

 

001 Hello, Kotlin!

002 표현식(Expression)

003 변수(Variable)

004 리터럴의 타입

005 산술 연산자(Arithmetic Operator) + - * / %

006 증감 연산자(Increment & Decrement Operator) + + - -

007 비트 연산자(Bitwise Operator) and or xor inv shl shr ushr

008 정수 타입과 실수 타입

009 실수 타입의 함정

010 문자 타입

011 문자열(String)

012 문자열 안에 표현식의 값을 집어넣기

013 타입 별명(Type Alias)

014 주석(Comment)

015 배정 연산자(Assignment Operator) =

016 문장(Statement)

017 비교 연산자(Comparison Operator) = = != 〉 〈 〉= 〈=

018 논리 연산자(Logical Operator) && || !

019 흐름 제어-조건문 if

020 흐름 제어-조건문 if- else

021 if와 else의 중첩

022 if-else를 표현식으로 사용하기

023 흐름 제어-조건문 when

024 when을 표현식으로 사용하기

025 흐름 제어-반복문 while

026 흐름 제어-반복문 do-while

027 흐름 제어 continue

028 흐름 제어 break

029 레이블(Label)

030 함수(Function)

031 매개변수(Parameter)와 인수(Argument)

032 Unit 타입

033 디폴트 인수

034 가변 인수

035 함수 오버로딩(Function Overloading)

036 지역 변수(Local Variable)와 전역 변수(Global Variable)

037 지역 변수와 전역 변수의 이름이 중복될 때

038 지역 변수와 다른 함수의 지역 변수가 중복될 때

039 지역 함수(Local Function)

040 메모리의 스택(Stack) 영역

041 소스 파일 여러 개로 분리하기

042 패키지(Package)

043 다른 패키지의 함수 호출하기

044 import

 

PART 2 초급// 코틀린 중급 문법 살펴보기

 

045 객체(Object)

046 메모리의 힙(Heap) 영역

047 클래스(Class)

048 힙 영역의 존재 이유

049 문자열간 + 연산 시 주의점

050 가비지 컬렉션(Garbage Collection)

051 = = =, != = 연산자

052 멤버 함수(Member Function)

053 프로퍼티와 멤버 함수의 매개변수 이름이 중복될 때

054 생성자(Constructor)와 초기화(Initializer) 블록

055 init 블록 나누어 쓰기

056 생성자와 프로퍼티 한 번에 쓰기

057 보조 생성자(Secondary Constructor)

058 프로퍼티와 Getter/Setter

059 연산자 오버로딩(Operator Overloading)

060 번호 붙은 접근 연산자(Indexed Access Operator) [ ]

061 호출 연산자(Invoke Operator) ( )

062 in 연산자

063 멤버 함수의 중위 표기법(Infix Notation)

064 상속(Inheritance)

065 업캐스팅(Upcasting)

066 오버라이딩(Overriding)

067 프로퍼티를 오버라이딩하기

068 다형성(Polymorphism)의 활용

069 클래스를 상속하는 객체

070 Any 클래스

071 예외(Exception)

072 예외 처리

073 예외 던지기

074 Nothing 타입

075 Nullable 타입과 null

076 안전한 호출 연산자(Safe Call Operator) ?

077 Not-null 단정 연산자(Not-null Assertion Operator) !!

078 엘비스 연산자(Elvis Operator) ?:

079 스마트 캐스팅

080 is 연산자

081 as 연산자와 다운캐스팅

082 접근 지정자(Access Modifier)

083 접근 지정자: private

084 접근 지정자: protected

085 접근 지정자 오버라이딩

086 확장 함수(Extension Function)

087 확장 프로퍼티(Extension Property)

 

PART 3 중급// 코틀린 고급 문법 살펴보기

 

088 객체 선언(Object Declaration)

089 동반자 객체(Companion Object)

090 inline 함수

091 const

092 lateinit

093 Nullable 리시버

094 동반자 객체의 확장 함수

095 확장 함수의 리시버 타입이 상속 관계에 있을 때

096 추상 클래스(Abstract Class)

097 인터페이스(Interface)

098 다이아몬드 문제(The Diamond Problem)

099 중첩 클래스(Nested Class)

100 내부 클래스(Inner Class)

101 데이터 클래스(Data Class)

102 객체 분해하기

103 함수 리터럴(Function Literal)과 람다식(Lambda Expression)

104 익명 함수(Anonymous Function)

105 it 식별자

106 함수 참조(Function Reference)

107 고차 함수(Higher-order Function)

108 클로저(Closure)

109 리시버가 붙은 함수 리터럴

110 제네릭(Generic)

111 여러 타입을 인수로 받기

112 구체화된(Reified) 타입 매개변수

113 클래스와 인터페이스에서 제네릭 사용하기

114 제네릭이 적용된 클래스/인터페이스 상속·구현하기

115 특정 타입을 상속·구현하는 타입만 인수로 받기

116 in/out 키워드

117 .. 연산자와 범위 표현식(Range Expression)

118 반복자(Iterator)

119 흐름 제어 - 반복문 for

120 배열(Array)

121 배열을 가변 인수로 활용하기

122 열거 클래스(Enum Class)

123 열거 클래스에 프로퍼티와 멤버 함수 선언하기

124 열거 클래스 활용하기

125 sealed 클래스

126 위임된 프로퍼티(Delegated Property)

127 클래스 위임(Class Delegation)

 

PART 4 활용// 코틀린 표준 라이브러리 살펴보기

 

128 Pair 클래스: 두 변수를 하나로 묶기

129 to 확장 함수: 두 값을 간단히 Pair로 묶기

130 Triple 클래스: 세 변수를 하나로 묶기

131 Comparable 인터페이스: 클래스를 비교 가능하게 만들기

132 ClosedRange 인터페이스: 닫힌 구간을 표현하는 인터페이스

133 Iterable 인터페이스: 클래스가 반복자를 지원하도록 하기

134 Progression과 관련된 함수

135 코틀린의 컬렉션(Collection)

136 Collection 인터페이스 살펴보기

137 List 인터페이스 살펴보기

138 ListIterator 인터페이스 살펴보기

139 Map 인터페이스 살펴보기

140 변경할 수 있는(Mutable) 컬렉션

141 MutableIterator 인터페이스 살펴보기

142 MutableList 인터페이스 살펴보기

143 MutableListIterator 인터페이스 살펴보기

144 MutableSet 인터페이스 살펴보기

145 MutableMap 인터페이스 살펴보기

146 Sequence 인터페이스 살펴보기

147 컬렉션 원소 타입 변환하기

148 컬렉션 중 원하는 원소 걸러내기

149 컬렉션 정렬하기

150 CharSequence 인터페이스: 문자열과 관련된 클래스가 구현하는 뼈대 인터페이스

151 접두사·접미사 관련 CharSequence 확장 함수

152 비어 있는 CharSequence인지 검사하기

153 CharSequence 가공하기

154 CharSequence 쪼개기

155 String 클래스 살펴보기

156 문자열 찾아 바꾸기

157 StringBuilder 클래스: 문자열 덧붙이기

158 Regex 클래스: 정규식 다루기

159 toList 확장 함수: List 타입으로 변환하기

160 run 확장 함수: 코드 중복 줄이기

161 let 확장 함수: 코드 중복 줄이기

162 with 함수: 코드 중복 줄이기

163 apply 함수: 객체 생성 및 초기화 코드를 표현식 하나로 압축하기

164 also 함수: 객체 생성 및 초기화 코드를 표현식 하나로 압축하기

165 lazy 함수: 게으른 초기화를 하는 프로퍼티 대리자

166 BigInteger 클래스: 매우 큰 정수 보관하기

167 BigDecimal 클래스: 매우 작은 실수 보관하기

168 최대값·최소값 구하기

169 실수 값 올림·내림·반올림하기

170 abs 함수: 절대값 구하기

171 E, PI: 수학 상수

172 hypot 함수: 빗변의 길이 구하기

173 지수함수

174 로그함수

175 삼각함수

176 toBits, toRawBits 확장 함수: 실수 타입을 이진수 값으로 가져오기

177 fromBits 확장 함수: 이진수 값으로부터 실수 값 만들기

178 Any?toString 확장 함수

179 String?plus 연산자 확장 함수

180 Double 값 검증하기

181 인수(Argument) 검증하기

182 KotlinVersion 클래스: 사용 중인 코틀린 버전 알아내기

183 exitProcess 함수: 어디서나 프로그램 종료하기

184 코드 성능 측정하기

185 파일 입출력

186 FileTreeWalk 클래스: 디렉토리 순회하기

187 thread 함수: 스레드 생성하기

188 timer 함수: 타이머 생성하기

189 synchronized 함수: 스레드 동기화하기

 

PART 5 실무// 코틀린과 자바 함께 사용하기

 

190 코틀린에서 자바 코드 접근하기: 타입

191 코틀린에서 자바 코드 접근하기: Null 안전성

192 코틀린에서 자바 코드 접근하기: 키워드 충돌

193 코틀린에서 자바 코드 접근하기: SAM 변환

194 코틀린에서 자바 코드 접근하기: Getter/Setter

195 코틀린에서 자바 코드 접근하기: 연산자 오버로딩

196 코틀린에서 자바 코드 접근하기: 클래스 참조

197 자바에서 코틀린 코드 접근하기: 패키지 레벨 변수·함수

198 자바에서 코틀린 코드 접근하기: 프로퍼티

199 자바에서 코틀린 코드 접근하기: 선언된 객체

200 자바에서 코틀린 코드 접근하기: 동반자 객체

 

 

 

 

반응형