코틀린 객체지향 프로그래밍 : OOP를 위한 다양한 디자인 패턴 - 에이콘 프로그래밍 언어 시리즈

코틀린 객체지향 프로그래밍 : OOP를 위한 다양한 디자인 패턴 - 에이콘 프로그래밍 언어 시리즈

$37.53
저자

아비드칸,이고르쿠체렌코

AbidKhan
10년이상의경험을가진애플리케이션개발자이자테스트엔지니어다.C/C++및자바를비롯한다양한프로그래밍언어분야에서활동했으며,현재안드로이드개발을위한기본언어로코틀린을사용하고있다.스웨덴스톡홀름에산다.새로운기술을배우고나서그에대한글을쓰는데시간을보낸다.

목차

01장.코틀린시작하기

__기술적요구사항
__코틀린소개
__코틀린의데이터유형
____코틀린에서변수선언
______var키워드
______val키워드
______유형추론
______유형어노테이션
______숫자데이터유형
______실수데이터유형
______불리언데이터유형
______문자데이터유형
______is키워드를사용한유형검사
______문자열변수
__널안전성,형변환,페어,트리플
____널안전성
______안전한호출연산자
______안전한호출연산자
______엘비스연산자:
______널아님단정연산자!!
____형변환
______바이트에서단정도실수로의변환
______배정도실수에서정수로변환
______문자열에서정수로변환
______스마트형변환(Smartcast)
______안전하지않은형변환
____페어와트리플
______선언방법
______값을가져오는방법
__흐름제어
____if문
____ifelse문
____조건부연산자가있는if문
______논리합연산자(and,&&)가있는if문
______논리합연산자(or,||)가있는if문
______논리부정연산자(not,!)가있는if문
______if표현식
______when표현식
________여러조건의결합
________when표현식에서범위사용
________표현식으로when사용
__반복문소개
____while문
____while문정의
____dowhile문
____for문
______for문정의
______중첩된for문
______break문
______레이블을가진for문과break문
__함수란?
____함수선언
____매개변수와반환형식이없는함수
____매개변수가있는함수
____매개변수와반환유형이있는함수
____표현식함수
____기본값이있는함수
____명명된매개변수를가진함수
____함수와vararg
____다른인자와함께쓰는vararg
____패키지수준의함수
______함수를액세스하는방법
__요약
__질문
__참고도서목록

02장.객체지향프로그래밍소개

__기술적요구사항
__객체지향프로그래밍이란?
____클래스와객체
____속성과행위
__객체지향프로그래밍의이점
__코틀린의클래스
__속성:일급객체
__생성자를사용해클래스만들기
____기본생성자
____주생성자
____init블록을가진주생성자
______this키워드
____부생성자
______생성자오버로딩
______기본매개변수를가진생성자
______명명된매개변수를가진생성자
__데이터클래스란?
____toString()함수
____equals()함수==
____copy()함수
____hashCode()함수
______객체분해
__클래스와함수
____함수오버로딩
__요약
__질문
__참고도서목록

03장.객체지향프로그래밍의4가지요소

__기술적요구사항
__캡슐화
____정보은닉
____접근제한자
______private제한자
______protected제한자
____구현숨기기
__상속이란?
____open키워드
____super키워드
____클래스초기화계층구조
__추상화
____추상클래스
____추상함수
__인터페이스
____다중인터페이스
______인터페이스간충돌해결
______인터페이스와다형성
__오버라이딩
____오버라이딩이란?
____super키워드
____final키워드
______함수오버라이딩규칙
____프로퍼티오버라이딩
__상속의종류
____단일상속
____다중상속
____계층상속
____계층다중상속
____is-a관계
__다형성
____다형성의작동원리
______동적바인딩
__요약
__질문
__참고도서목록

04장.클래스:고급개념

__기술적요구사항
__봉인된클래스와열거형클래스
____봉인된클래스
______when절과봉인된클래스
______봉인된클래스가필요한이유
____열거형클래스
______생성자를가진열거형클래스
______열거형클래스와함수
______열거형클래스와인터페이스
__객체와컴패니언객체
____상속과인터페이스가함께있는객체클래스
____컴패니언객체
______컴패니언함수와인터페이스
__집합,구성,중첩클래스
____집합
____구성
____중첩클래스
______내부클래스
__클래스프로퍼티
__위임프로퍼티
__기본제공위임자
__요약
__질문
__참고도서목록

05장.데이터컬렉션,반복자,필터

__기술적요구사항
__범위
____범위유형
____범위선언
______rangeTo함수
______until함수
______downTo함수
______step함수
______contains함수
______elementAt함수
______범위프로퍼티
______coerce함수
________coerceIn함수
________coerceAtMost(maxValue)함수
________coerceAtLeast(minValue)함수
__배열
____배열정의
____특정유형의배열
______배열요소의색인
____get함수
____배열과for문
____배열선언과초기화
______set함수
______불변요소를갖는가변배열
______배열의람다표현식
______서로다른유형의요소를가진배열
______arrayOfNulls함수
____배열복사
__코틀린의목록
____불변목록
______listOfNotNull함수
______목록에접근
____불변목록과인터페이스
______반복가능인터페이스
______컬렉션인터페이스
______목록인터페이스
____가변목록
______MutableInterable인터페이스
______가변컬렉션인터페이스
______가변목록인터페이스
____코틀린에서세트
______불변세트
______가변세트
____맵
______불변맵
______가변맵
____코틀린에서반복자
______반복자
______list반복자
______가변반복자
______가변목록반복자
__필터와컬렉션함수
____filter함수
______it키워드
____filterNot함수
____filterNotNull함수
____filterIsInstance〈dataType〉함수
____slice함수
____take함수
______takeLast
______takeWhile
______takeLastWhile
____drop함수
______dropLast
______dropWhile
______dropWhileLast
____fold함수
____foldRight
____reduce함수
______reduceRight
______reduceRightIndexed
____몇가지중요한함수
______forEach
______forEachIndexed
______onEach
______max와maxBy
______min과minBy
__요약
__질문
__참고도서목록

06장.코틀린을사용한객체지향패턴

__기술적요구사항
__설계패턴은무엇이며어떻게도움을주는가?
__설계패턴의유형
____생성패턴
____구조패턴
____행동패턴
__생성패턴
____생성자
____팩토리메서드
____추상팩토리
____싱글톤
__구조패턴
____어댑터
____데코레이터
____퍼사드
____프록시
__행동패턴
____관찰자
____전략
____명령
____상태
____책임연쇄
____방문자
__요약

07장.코루틴:경량스레드?

__기술적요구사항
__코루틴이란?
__코루틴과스레드
__코루틴예제코드
____예외처리
____자원해제
____취소불가능블록
____병렬실행
____지연실행
____채널
__요약

08장.상호운용성

__기술적요구사항
__코틀린에서자바코드호출
____정적변수와함수호출
____코틀린에서자바컬렉션호출
____코틀린의예약어
____코틀린에서자바클래스
__자바에서코틀린코드호출
____코틀린함수호출
______확장함수
______가변컬렉션이있는함수
______불변컬렉션이있는함수
______JVM어노테이션이있는함수
____코틀린클래스호출
____코틀린싱글톤클래스호출
__요약
__질문
__참고도서목록

09장.코틀린의정규식과직렬화

__기술적요구사항
__정규식소개
__코틀린과정규식
__직렬화소개
__직렬화와코틀린지원
__요약

10장.예외처리

__기술적요구사항
__예외처리란?
__확인된예외와확인되지않은예외
____예외계층구조
____자바에서의예외
____코틀린에서의예외
____상호운용성
__try블록을표현식으로사용
__사용자정의예외작성
__요약
__질문
__참고도서목록

11장.코틀린을사용한객체지향프로그래밍테스트

__기술적요구사항
__테스트의필요성
__테스트유형
____수동테스트
____자동테스트
______단위테스트
__코틀린테스트라이브러리
____설치
______그루비스크립트를사용하는그레들
______코틀린스크립트를사용하는그레들
______메이븐
__테스팅예제코드
____클래스참조
____사양작성
______given,on과it블록
______예외테스트
______describe과it블록
__요약
__질문
__참고도서목록

출판사 서평

이책에서다루는내용

-코틀린프로그래밍언어개요
-코틀린의객체지향프로그래밍기술
-객체지향디자인패턴
-코틀린방식으로멀티스레딩(코루틴)
-배열과컬렉션
-객체지향디자인패턴의중요성
-코틀린객체지향프로그래밍에서예외처리와테스트이해

이책의대상독자

코틀린이어떻게작동하는지를더깊이이해하고싶은개발자를대상으로한다.특정플랫폼이나프레임워크에의존하지않고자바가상머신에초점을맞추고있으며,자바스크립트에대한코틀린및코틀린의네이티브기능은다루지않는다.사용자인터페이스및다중스레드환경과관련된예제를포함하고있기때문에클라이언트개발자에게좋은선택이될것이다.

이책의구성

1장,‘코틀린시작하기’에서는코틀린프로그래밍언어의간략한개요를제공한다.또한데이터유형과null안전및형변환의작동방식을알아본다.연산자(operator)및흐름제어도소개한다.반복문과함수도살펴본다.

2장,‘객체지향프로그래밍소개’에서는객체지향프로그래밍이무엇인지,왜절차적프로그래밍과다르고더나은지살펴본다.코틀린의클래스와데이터클래스를설명하고코틀린이어떻게그것들을독특하게만드는지알아본다.또한생성자,생성자의유형및속성그리고제일중요한속성이무엇을의미하는지자세히알아본다.

3장,‘객체지향프로그래밍의4가지요소’에서는객체지향프로그래밍의4가지요소를자세히알아본다.또한캡슐화가무엇인지,상속이어떻게작동하는지알아본다.다형성을선택하는이유와추상화의장점도알아본다.마지막으로부모클래스를선언하는방법과자식클래스에서자원을활용하는방법을살펴본다.

4장,‘클래스:고급개념’에서는코틀린이독점적으로제공하는프로그래밍의핵심개념을알아본다.봉인된클래스,객체,컴패니언객체의개념과기존클래스와다른이유를알아본다.또한클래스의속성과위임을알아본다.

5장,‘데이터컬렉션,반복자,필터’에서는코틀린에서제공하는다양한데이터구조를사용해데이터컬렉션을처리하는방법을살펴본다.또한배열을정의하고사용하는방법과목록,세트,컬렉션,맵과같은객체컬렉션을효율적으로관리하고자다양한템플릿을활용하는방법을알아본다.

6장,코틀린을사용한객체지향패턴은설계패턴이라고하는객체지향프로그래밍의고급개념을다룬다.설계패턴은소프트웨어설계에서알려진문제에대한일반적인해결책이다.설계패턴은개발프로세스를가속화하고이후단계에서발생할수있는설계에러의위험을줄일수있다.다른문제에는다른설계패턴이사용된다.소프트웨어설계과제와설계패턴을살펴본다.

7장,‘코루틴:경량스레드?’에서는코틀린이코루틴이라는새로운라이브러리를어떻게도입했는지알아본다.코루틴은수천개의요청이진행중이더라도CPU를한계까지밀어내지않는경량스레드로간주할수있다.코루틴이무엇인지설명하고자바에서기존스레드보다우수한이유를알아본다.

8장,‘상호운용성’에서는코틀린이자바상호운용성을염두에두고설계된자바의슈퍼세트라는사실을살펴본다.상호운용성은코틀린에서자바함수를호출할수있고그반대의경우도가능하며자바및코틀린파일을동일한애플리케이션에서사용할수있음을의미한다.상호운용성에대한기술과플랫폼간코드작성방법을자세히알아본다.가장중요한것은자바에서나타날수있는널(null)입력가능호출을처리하는방법을알아본다.

9장,‘코틀린의정규식’과직렬화에서는regex라고도알려진정규식이많은양의텍스트에서필요한정보를찾는데도움을주는다른문자의조합을살펴본다.이기술은사용자가문자열(패턴)을제공하고정확하게일치하거나유사한목록을얻는다.모든고급텍스트편집기는정규식을사용해코드에서변수를찾는다.그리고코틀린이정규식에대한완벽한지원과버그없는패턴작성을지원하는방법을알아보고,직렬화와JSON같은텍스트형식을코틀린에서어떻게동작하는지도알아본다.

10장,‘예외처리’에서는예외및예외처리를자세히알아본다.또한다양한키워드가시도하고캐치(catch)하고던지고(throw)마침내던지는등다양한예외유형과사용자가사용자정의예외를작성하고처리하는방법을알아본다.또한테스트환경을준비해몇가지테스트를작성할수있는방법을살펴본다.

11장,‘코틀린을사용한객체지향프로그래밍테스트’에서는테스트의중요성,테스트가필요한이유및코드를테스트하지않고공개했을때의영향에대한통찰력을제공한다.또한테스트기술,테스트용전용코틀린라이브러리및코틀린이깨끗하고읽기쉬운테스트사례를작성하는방법을알아본다.

지은이의말

코틀린은자바코드와상호운용하도록설계된정적타입의프로그래밍언어다.kotlinc컴파일러는javac와동일한바이트코드를생성하기때문에새로운코드기반으로이동하는데많은노력이필요없다.코틀린은간결하고안전한코드를작성할수있으며,다양한패러다임의많은기능을포함하는현대언어다.이러한모든점에비춰볼때코틀린은인기가증가하고그것을사용하는개발자의수역시증가하고있다.

옮긴이의말

많은기업과개발자가엔터프라이즈애플리케이션을만들때필수적으로사용해오던자바에서부족했던언어적인한계를해결하고자코틀린을적용해더손쉽게엔터프라이즈애플리케이션프로젝트를수행하는경우가많아지고있다.코틀린은구글에의해안드로이드앱을만들기위한개발언어로공식지정된이후모바일앱뿐만아니라서버사이드에서도적용하는사례가점차증가하고있다.이책에서는개발언어로서제공하는코틀린의기본기능뿐만아니라다양한부가기능을소개해처음접하는사람뿐만아니라이미알고있는개발자라하더라도코틀린을이용해서객체지향프로그래밍을하기위한다양한패턴과주의할것들을소개한다.처음이책을번역하고상당히오랜기간이지난시점에서책으로출판이돼코틀린자체에도많은변화가있었으나코틀린의기본개념의변화는없었기때문에객체지향에관심이있는개발자는한번보는것이좋겠다.