스위프트 프로그래밍 - 객체지향, 함수형, 프로토콜 지향 패러다임까지 한번에! (Swift3)
객체지향, 함수형, 프로토콜 지향 패러다임까지 아우른 스위프트 3의 문법과 개념을 예제로 설명한다.
대상 독자
● 스위프트를 배우고자 하는 개발자
● 다른 프로그래밍 언어를 사용해본 경험이 있는 프로그래밍 초보자
언어 스위프트를 제대로 배워보자!
문법 소개를 넘어 다양한 예제를 통해 문법을 익혀볼 수 있는 이 책에는 함수형 프로그래밍 및 프로토콜 지향 프로그래밍의 개념과 이해, 활용까지 담았다. 함수형 프로그래밍과 프로토콜 지향 프로그래밍에 익숙하지 않은 프로그래머라도 이 책의 예제를 통해 다양한 개념에 친숙하게 다가갈 수 있으리라 믿는다. 기본에서부터 고급 내용까지, 책의 내용을 순차적으로 따라가면 어느새 스위프트를 마스터할 수 있을 것이다.
yagom’s blog(http://blog.yagom.net)를 운영하는 iOS 개발자로 iOS, macOS 개발자 커뮤니티인 맥부기(http://cafe.naver.com/mcbugi)에서 강좌를 연재하였고, OSXDev(http://osxdev.org) 커뮤니티 활동도 하고 있다. 컴퓨터 교육을 전공했으며 비전공자와 학생들에게 컴퓨터 지식을 더 쉽고 재미있게 알리는 데 관심이 많아 후배 프로그래머에게 지식을 나누는 데에도 힘을 쏟고 있다. 2010년부터 iOS 개발을 시작해 현재까지도 계속 iOS 관련 개발에 열정을 쏟고 있다. 내일 걱정은 모레 하는 것이 좋다고 생각하며 긍정적인 마음가짐을 빼면 시체라고 말한다. 스스로 개발자라고 생각하지 않는 것을 보면 괴짜임이 틀림없다. 무엇보다 여행과 요리를 좋아한다. 저서로는 『iOS 7 핵심 노트』, 『iOS 8 핵심 노트』, 『iOS 9 핵심 노트』, 『만들면서 배우는 Swift』(이상 한빛미디어)가 있다.
PART I 스위프트 기초
CHAPTER 1 스위프트
1.1 스위프트의 역사
1.2 스위프트의 언어적 특성
__1.2.1 객체지향
__1.2.2 함수형
__1.2.3 프로토콜 지향
1.3 스위프트 실행 환경
__1.3.1 Xcode - 플레이그라운드
__1.3.2 REPL
__1.3.3 웹
__1.3.4 모바일
CHAPTER 2 스위프트 처음 시작하기
2.1 기본 명명 규칙
2.2 콘솔 로그
__2.2.1 print( ) 함수
__2.2.2 문자열 보간법
2.3 주석
__2.3.1 주석 남기기
__2.3.2 마크업 문법을 활용한 문서화 주석
2.4 변수와 상수
__2.4.1 변수
__2.4.2 상수
CHAPTER 3 데이터 타입 기본
3.1 Int와 UInt
3.2 Bool
3.3 Float과 Double
3.4 Character
3.5 String
__3.5.1 특수문자
3.6 Any, AnyObject와 nil
CHAPTER 4 데이터 타입 고급
4.1 데이터 타입 안심
__4.1.1 데이터 타입 안심이란
__4.1.2 타입 추론
4.2 타입 별칭
4.3 튜플
4.4 컬렉션 타입
__4.4.1 배열
__4.4.2 딕셔너리
__4.4.3 세트
4.5 열거형
__4.5.1 기본 열거형
__4.5.2 원시 값
__4.5.3 연관 값
__4.5.4 순환 열거형
CHAPTER 5 연산자
5.1 연산자의 종류
__5.1.1 할당 연산자
__5.1.2 산술 연산자
__5.1.3 비교 연산자
__5.1.4 삼항 조건 연산자
__5.1.5 범위 연산자
__5.1.6 부울 연산자
__5.1.7 비트 연산자
__5.1.8 복합 할당 연산자
__5.1.9 오버플로 연산자
__5.1.10 기타 연산자
5.2 연산자 우선순위와 결합방향
5.3 사용자정의 연산자
__5.3.1 전위 연산자 정의와 구현
__5.3.2 후위 연산자 정의와 구현
__5.3.3 중위 연산자 정의와 구현
CHAPTER 6 흐름 제어
6.1 조건문
__6.1.1 if 구문
__6.1.2 switch 구문
6.2 반복문
__6.2.1 for-in 구문
__6.2.2 while 구문
__6.2.3 repeat-while 구문
6.3 구문 이름표
CHAPTER 7 함수
7.1 함수와 메서드
7.2 함수의 정의와 호출
__7.2.1 기본적인 함수의 정의와 호출
__7.2.2 매개변수
__7.2.3 반환 타입
__7.2.4 데이터 타입으로서의 함수
7.3 중첩 함수
7.4 종료되지 않는 함수
CHAPTER 8 옵셔널
8.1 옵셔널 사용
8.2 옵셔널 추출
__8.2.1 강제 추출
__8.2.2 옵셔널 바인딩
__8.2.3 암시적 추출 옵셔널
PART II 객체지향 프로그래밍과 스위프트
CHAPTER 9 구조체와 클래스
9.1 구조체
__9.1.1 구조체 정의
__9.1.2 구조체 인스턴스의 생성 및 초기화
9.2 클래스
__9.2.1 클래스 정의
__9.2.2 클래스 인스턴스의 생성과 초기화
__9.2.3 클래스 인스턴스의 소멸
9.3 구조체와 클래스의 차이
__9.3.1 값 타입과 참조 타입
__9.3.2 스위프트의 기본 데이터 타입은 모두 구조체
9.4 구조체와 클래스 선택해서 사용하기
CHAPTER 10 프로퍼티와 메서드
10.1 프로퍼티
__10.1.1 저장 프로퍼티
__10.1.2 지연 저장 프로퍼티
__10.1.3 연산 프로퍼티
__10.1.4 프로퍼티 감시자
__10.1.5 전역변수와 지역변수
__10.1.6 타입 프로퍼티
10.2 메서드
__10.2.1 인스턴스 메서드
__10.2.2 타입 메서드
CHAPTER 11 인스턴스 생성 및 소멸
11.1 인스턴스 생성
__11.1.1 프로퍼티 기본값
__11.1.2 이니셜라이저 매개변수
__11.1.3 옵셔널 프로퍼티 타입
__11.1.4 상수 프로퍼티
__11.1.5 기본 이니셜라이저와 멤버와이즈 이니셜라이저
__11.1.6 초기화 위임
__11.1.7 실패 가능한 이니셜라이저
__11.1.8 함수를 사용한 프로퍼티 기본값 세팅
11.2 인스턴스 소멸
CHAPTER 12 접근제어
12.1 접근제어란
__12.1.1 접근제어의 필요성
__12.1.2 모듈과 소스파일
12.2 접근수준
__12.2.1 공개 접근수준, public
__12.2.2 개방 접근수준, open
__12.2.3 내부 접근수준, internal
__12.2.4 파일외부비공개 접근수준, fileprivate
__12.2.5 비공개 접근수준, private
12.3 접근제어 구현
12.4 접근제어 구현 참고사항
PART III 함수형 프로그래밍과 스위프트
CHAPTER 13 클로저
13.1 기본 클로저
13.2 후행 클로저
13.3 클로저 표현 간소화
__13.3.1 문맥을 통한 타입 유추
__13.3.2 단축 인자 이름
__13.3.3 암시적 반환 표현
__13.3.4 연산자 함수
13.4 값 획득
13.5 클로저는 참조 타입
13.6 탈출 클로저
13.7 자동 클로저
CHAPTER 14 옵셔널 체이닝과 빠른종료
14.1 옵셔널 체이닝
14.2 빠른종료
CHAPTER 15 맵, 필터, 리듀스
15.1 맵
15.2 필터
15.3 리듀스
15.4 맵, 필터, 리듀스의 활용
CHAPTER 16 모나드
16.1 컨텍스트
16.2 함수객체
16.3 모나드
PART IV 확장
CHAPTER 17 서브스크립트
17.1 서브스크립트 문법
17.2 서브스크립트 구현
17.3 복수 서브스크립트
CHAPTER 18 상속
18.1 클래스 상속
18.2 재정의
__18.2.1 메서드 재정의
__18.2.2 프로퍼티 재정의
__18.2.3 프로퍼티 감시자 재정의
__18.2.4 서브스크립트 재정의
__18.2.5 재정의 방지
18.3 클래스의 이니셜라저 - 상속과 재정의
__18.3.1 지정 이니셜라이저와 편의 이니셜라이저
__18.3.2 클래스의 초기화 위임
__18.3.3 2단계 초기화
__18.3.4 이니셜라이저 상속 및 재정의
__18.3.5 이니셜라이저 자동 상속
__18.3.6 요구 이니셜라이저
CHAPTER 19 타입캐스팅
19.1 기존 언어의 타입 변환과 스위프트의 타입 변환
19.2 스위프트 타입캐스팅
19.3 데이터 타입 확인
19.4 다운캐스팅
19.5 Any, AnyObject의 타입캐스팅
CHAPTER 20 프로토콜
20.1 프로토콜이란
20.2 프로토콜 정의
20.3 프로토콜 요구사항
__20.3.1 프로퍼티 요구
__20.3.2 메서드 요구
__20.3.3 가변 메서드 요구
__20.3.4 이니셜라이저 요구
20.4 프로토콜의 상속과 클래스 전용 프로토콜
20.5 프로토콜 조합과 프로토콜 준수 확인
20.6 프로토콜 선택적 요구
20.7 프로토콜 변수와 상수
20.8 위임을 위한 프로토콜
CHAPTER 21 익스텐션
21.1 익스텐션이란
21.2 익스텐션 문법
21.3 익스텐션으로 확장할 수 있는 항목
__21.3.1 연산 프로퍼티
__21.3.2 메서드
__21.3.3 이니셜라이저
__21.3.4 서브스크립트
__21.3.5 중첩 데이터 타입
CHAPTER 22 제네릭
22.1 제네릭 함수
22.2 제네릭 타입
22.3 제네릭 타입 확장
22.4 타입 제약
22.5 프로토콜의 연관 타입
CHAPTER 23 프로토콜 지향 프로그래밍
23.1 프로토콜 초기구현
23.2 맵, 필터, 리듀스 직접 구현해보기
23.3 기본 타입 확장
PART V 스위프트 고급
CHAPTER 24 타입 중첩
24.1 중첩 데이터 타입
CHAPTER 25 패턴
25.1 와일드카드 패턴
25.2 식별자 패턴
25.3 값 바인딩 패턴
25.4 튜플 패턴
25.5 열거형 케이스 패턴
25.6 옵셔널 패턴
25.7 타입캐스팅 패턴
25.8 표현 패턴
CHAPTER 26 where 절
26.1 where 절의 활용
CHAPTER 27 ARC
27.1 ARC란
27.2 강한참조
__27.2.1 강한참조 순환 문제
27.3 약한참조
27.4 미소유참조
27.5 미소유참조와 암시적 추출 옵셔널 프로퍼티
27.6 클로저의 강한참조 순환
__27.6.1 획득목록
CHAPTER 28 오류처리
28.1 오류처리란
28.2 오류의 표현
28.3 오류 포착 및 처리
__28.3.1 함수에서 발생한 오류 알리기
__28.3.2 do-catch 구문을 이용하여 오류처리
__28.3.3 옵셔널 값으로 오류처리
__28.3.4 오류가 발생하지 않을 것이라고 확신하는 방법
__28.3.5 다시던지기
__28.3.6 후처리 defer
부록
A. 스위프트의 주요 프로토콜
B. 스위프트의 주요 함수
C. 스위프트의 예약어
D. 디버깅 식별자
E. 컴파일러 제어 구문
F. 사용 가능 조건 확인
G. 속성
H. 타입 별칭 및 호환 타입
야곰 지음 저자가 집필한 등록된 컨텐츠가 없습니다.