안녕하세요?
사람에게 유용한 현실을 만드는 코딩, 휴먼코딩 입니다.
코틀린 비기너 프로그래밍 종이책이 네이버 스마트스토어(네이버쇼핑 NPay, http://smartstore.naver.com/humancoding/products/2879305691 )에 판매 등록 되었습니다.
휴먼코딩 모두앳에서는 '스토어'페이지를 통해 바로 확인이 가능합니다.
코딩 초보자를 위한 '코틀린 비기너' 프로그래밍 종이책은 디지털 POD 방식으로 소량 생산한 한정판이며, 기존 PDF 전자책으로 장시간 학습 하시기에 눈이 피로하셨던 분들께 권장드립니다.
앞으로 본 전용 교재와 유튜브의 무료 코틀린 비기너 비디오 강좌를 수강 하시며, 초보 개발자분들께서 원하시는 좋은 성과를 거두시는데 큰 도움이 되었으면 합니다.
여러분의 많은 성원 부탁드립니다. 감사합니다.
종이책 교재 링크
• 네이버 스마트 스토어: http://smartstore.naver.com/humancoding/products/2879305691 (10% 할인 + NPay 적립 별도)
• 네이버 모두앳: https://humancoding.modoo.at/?link=5n9wrh1c
전자책 교재 링크
• 예스24: http://www.yes24.co.kr/24/goods/59615009 (10% 할인 + 5% 적립)
• 알라딘: http://www.aladin.co.kr/shop/wproduct.aspx?ItemId=140715427 (10% 할인 + 5% 적립)
• 반디앤루니스: http://www.bandinlunis.com/front/product/detailProduct.do?prodId=5232810 (10% 할인 + 5% 적립)
• 리디북스: https://ridibooks.com/v2/Detail?id=2580000002 (5,900원에 대여 가능! or 10% 할인 구매)
• 인터파크: http://book.interpark.com/product/BookDisplay.do?_method=detail&sc.shopNo=0001100000&sc.prdNo=282843949&pis1=book&pis2=product (10% 할인예정 + 5% 적립)
- 사람에게 유용한 현실을 만드는 코딩, 휴먼코딩.
판권 및 저작권 공지 2
저자(강사): 김희정 4
머리말 5
1-1 웰컴 투 코틀린! 18
코틀린 전망 리포트 18
Kotlin Versions 19
1-2 코틀린 환경 설정 20
Installing IDE 20
Windows 기반 코틀린을 위한 IntelliJ Idea 설치 20
리눅스 사용자들을 위한 SNAP기반 코틀린 설치 21
Building Kotlin 21
코틀린을 배우려면 자바를 꼭 알아야 하나요? 22
코틀린 설치 및 동작 환경 관련 URL들 22
1-3 코틀린 코딩 시작하기 23
코틀린 REPL 23
Try kotlin! (Online Hands-on) 23
Hello Kotlin! 시작하기 24
Kotlin Koans Levels 25
1-4 프로그램 구조 26
프로그램 구성 요소 26
1-5 메인 함수 29
❑ 표기법 Camel case vs. Snake type 30
1-6 인사말 프로젝트 31
섹션 퀴즈 34
2-1 기본 자료형 38
수치, 논리, 문자 계열 기본 데이터타입 38
2-2 변수 vs. 상수 41
2-3 수치 데이터형 44
Byte형 값의 저장과 표현 및 Nibble 44
Numerics 수치 계열 기본형의 분리와 크기 44
수치형 밑줄문자 표현(Underscore Notation) 45
2-4 문자와 문자열형 47
문자열 인터폴레이션 47
코틀린의 문자셋(Charsets) 48
2-5 진법 표현과 변환 51
진법기반 문자열-수치값 상호 변환 51
2-6 Any 클래스, 타입 체크 및 캐스트 54
Any 클래스 54
명시적 형 변환 (Explicit Conversions) 54
2-7 스마트 & 안전한 캐스트 58
스마트 자동 타입 캐스트(Smart Type Cast) 58
타입 캐스트 연산자 as와 as? 58
2-8 널가능형, 예외 그리고 널안전성 61
Null과 널가능형(Nullable) 61
NPE, 1 Billion Dollar Mistake 61
안전한 호출(Safe Call) ?. 62
엘비스 연산자(Elvis Operator) ?: 62
섹션 퀴즈 65
3-1 연산자들 68
❑ 코틀린 연산자 우선 순위(Precedence) 68
3-2 조건식과 if 분기문 71
Expression If: 식으로써의 If 문 71
3-3 if/ else if 다중 분기문 74
3-4 when 분기문 77
식(Expression)으로써의 when 분기문 77
3-5 다중 중첩 분기문 81
문자의 수치화 81
3-6 비트 조작 연산자 I 85
논리 비트 연산자 (Logical Bitwise Operators) 85
3-7 비트 조작 연산자 II 89
Bitwise XOR (배타적 OR) 89
섹션 퀴즈 93
3-a 섹션 프로젝트: 온도 변환기 95
❑ 온도 단위 변환 공식 96
4-1 배열 102
배열의 순서번호와 lastIndex 102
배열 빌더 클래스(Array Builder Classes) 103
4-2 for 루프 반복문, 인덱스 106
4-3 범위 111
4-4 while/do~while 루프 반복문 116
❑ 소수(Prime Number) 116
4-5 문자열과 2차원 배열 121
코틀린 다차원 배열 (Multi-dimensional Arrays) 121
4-6 루프 제어문: break & continue 125
❑ Leap Year: 윤년 판단 알고리즘 (그레고리력) 125
4-7 중첩 루프 반복문과 레이블 130
섹션 퀴즈 135
4-a 섹션 프로젝트: 행운 번호 뽑기 777 138
❑ 범위 내 랜덤 정수 생성 138
5-1 컬렉션: Set 집합 구조 144
코틀린 Set 구조 144
Mutable vs. Immutable Set 145
5-2 컬렉션: List 리스트 구조 149
코틀린 List 구조 149
❑ 스택과 큐 데이터 구조 150
5-3 컬렉션: Map/Hash 맵과 해시 구조 154
코틀린 Map 구조 154
5-4 자바 컬렉션과 CRUD 개념 159
❑ CRUD 연산 개념 159
코틀린 JVM 컬렉션 클래스 레퍼런스 160
5-5 함수: 오버로딩, 기본 & 네임드 인자, 단일식 바디 165
함수 Body와 Return Type 165
Single Expression Body Function 166
Default Argument와 Named Parameter 166
함수 오버로딩(Function Overloading) 167
5-6 함수: 가변 인자와 뷰 171
vararg 가변인자 함수 171
코틀린 뷰 (View) 171
펼침 연산자 (Spread Operator) 172
섹션 퀴즈 174
5-a 섹션 프로젝트: 원투구골 수치-문자 변환기 176
수 이름 체계 (한글/한문) 177
6-1 객체지향프로그래밍, 클래스, 오브젝트 188
Instantiation과 Constructor 190
6-2 주요 생성자와 val/var 프라퍼티 194
주요(Primary) 생성자 194
6-3 초기화 블록, 2차 생성자들 199
this()를 통한 생성자 초기화 위임 199
6-4 Getter/Setter 메소드와 백킹 필드 206
Custom getter/setter 메소드 206
Backing 필드 207
6-5 가시성 제한자 211
Visibility Modifiers in Kotlin 211
❑ 자바 진영의 SW 빌드 도구들 212
6-6 import, 클래스 인자, let() & with() 215
let() 편리함수 215
with() 편리함수 216
6-7 상속, super, UML & 도형 프로젝트: 점 221
kotlin.Any 최상위 클래스 221
super vs. this 222
UML(통합 모델링 언어) 222
❑ Staruml UML 도구와 Class Diagram 223
6-8 오버라이드, open, final & 도형 프로젝트: 선 227
override method/property 227
6-9 도형 프로젝트: 삼각형 .. 236
mapTo() 확장 함수 236
6-10 도형 프로젝트: 그래픽스 .. 249
❑ AWT/Swing 그래픽 기초 소개 249
다형성 (Polymorphism) 249
섹션 퀴즈 255
6-a 섹션 프로젝트: 다국어 인사처리 258
7-1 VO/DTO, toString, copy() 266
Structured Data Object 266
VO/DTO 267
회원 스키마(Member Schema)와 ERD 267
7-2 데이터 클래스와 튜플 272
equals(), hashCode() & toString() 272
코틀린 튜플(Tuples) 273
7-3 동등성과 동일성 비교 280
코틀린 동등성 테스트 280
코틀린 동일성 테스트 280
7-4 enum 열거형 클래스 290
열거 상수와 열거 타입 290
섹션 퀴즈 299
7-a 섹션 프로젝트: 플래시카드 관리 301
8-1 늦은 초기화와 지연된 초기화 314
lateinit: 늦은 초기화 314
by lazy: 게으른 초기화 (프라퍼티 위임) 315
8-2 추상클래스와 추상메소드 319
추상 메소드 (Abstract Method) 319
추상 클래스 (Abstract Class) 319
❑ 앵그리버드 (Angry Birds) 320
8-3 인터페이스 329
interface와 다중 상속 329
8-4 다형성 구조 341
클래스 상속 다형성 (Class Inheritance Polymorphism) 341
8-5 중첩 클래스와 내부 클래스 356
중첩 클래스 (Nested Class) 356
내부 클래스 (Inner Class)와 super@OO.oo 레이블 356
8-6 오브젝트 선언과 컴패니언 오브젝트 362
Singleton 패턴과 Object Declaration 362
Companion Object와 Factory 패턴 362
@JvmStatic과 @JvmField 기반의 자바 스태틱 호환성 364
8-7 봉인 클래스와 타입 별칭 371
타입별칭 혹은 치환(typealias) 371
실드 클래스 (Sealed Class)기반 열거형 처리 371
봉인클래스형 인자에 대한 when 분기문에서의 실드 체크 372
섹션 퀴즈 375
8-a 섹션 프로젝트: 음료수 자판기 377
9-1 디스트럭쳐링 394
디스트럭쳐링 선언 (Destructuring Declaration) 394
디스트럭쳐링 튜플 (Destructuring Tuples) 394
9-2 타입 확장 함수 399
확장 함수와 리시버 (Extension Function & Receiver) 399
9-3 타입 확장 프라퍼티 404
확장 프라퍼티(Extension Property) 404
각종 크기 변환 비율 404
섹션 퀴즈 411
9-a 섹션 프로젝트: 개미 수열 413
10-1 함수 타입, 익명 함수 & 람다식 420
프로그래밍 언어의 흥망성쇠와 패러다임 & 폴리글랏 420
함수형 프로그래밍(FP) 개요 421
1급 함수 (First-class Function) 422
함수 타입 (Function Type) 422
고차함수 (HOF: Higher Order Functions) 423
익명 함수 (Anonymous Function) 424
람다식 (Lambda Expression) 424
10-2 함수 레퍼런스, 임포트 as & 람다식인자 it 428
단일 람다식 파라미터 표현, it 428
:: 함수 레퍼런스 (Function Reference) 429
임포트 별칭, import as 429
10-3 자바 SAM 함수형 인터페이스, 익명 객체식 435
익명 객체식 (Anonymous Object Expression) 435
Java SAM 함수형 인터페이스 (Functional Interface) 436
❑ Java SAM Interface의 정의와 예 436
10-4 함수형 커링과 부분 응용 441
커링 (Currying) 441
부분 응용 (Partial Application) 441
10-5 클로져, 펑터 & with(), apply(), run(), also() 446
클로져 (Closures) 446
펑터 (Functor)와 Mappable 446
유용한 표준/스코프 함수 (StdLib & Scope Functions) 447
섹션 퀴즈 454
10-a 섹션 프로젝트: 임금근로자 통계 그래프 456
국내외 각종 임금 및 연봉 DB 457
그래프 라이브러리 jar 추가 (Dependency 설정) 458
섹션 퀴즈 정답 468
인덱스 (찾아보기) 470