만들면서 배우는 코틀린 & 안드로이드 프로그래밍

기초 문법부터 다섯 가지 실전 프로젝트 예제를 꼼꼼하게 설명하는

꼼꼼하고 친절한 안드로이드 앱 개발 실전 가이드!

이 책은 코틀린 언어를 이용해 안드로이드 앱을 개발하는 방법을 다룹니다. 코틀린 언어를 학습하는 과정에서 프로그램을 작성하는 데 필요한 필수 개념을 살펴보고, 콘솔에서 동작하는 간단한 프로그램을 작성합니다. 이후 안드로이드 스튜디오 활용법과 안드로이드 운영체제의 특징 및 앱 개발에 필요한 필수 개념을 학습합니다.

이러한 과정을 통해 앱 개발에 흥미를 느끼고 자신감을 가질 수 있도록 구성했으며, 입문자들이 안드로이드 개발자로 성장할 수 있도록 프로젝트를 처음부터 끝까지 진행하며 다양한 기능을 제공하는 완성된 앱을 만들어 봅니다.

★ 이 책에서 다루는 내용 ★

  • 코틀린 기초 문법
  • 객체지향 프로그래밍 기초 (클래스, 상속)
  • 객체지향 프로그래밍 고급 및 클래스 활용법
  • 안드로이드 앱 개발에 필요한 개념
  • 안드로이드 스튜디오 및 API 활용법
  • 5가지 실전 프로젝트를 진행하며 다양한 기능을 수행하는 안드로이드 앱 구현

 

도서 상세 이미지

유병석

미술 대학에 진학해 디자인을 공부하던 중 프로그래머로 일하는 친구의 도움으로 PHP 언어를 이용해 홈페이지를 만들며 프로그래밍 세계에 입문했습니다. 이후 프로그래밍을 진지하게 배워보고 싶어 컴퓨터 공학을 복수 전공하며 본격적으로 개발 경력을 쌓게 됐습니다. 안드로이드 개발자로 스포카에 입사해 앱 개발뿐만 아니라 프론트엔드, 백엔드 개발도 같이 진행하며 다양한 분야의 개발을 경험했습니다. 개발과 관련된 지식을 쌓고 나누는 것을 좋아하고 현재는 미림여자정보과학고등학교에 교사로 재직하며 컴퓨터 프로그래밍을 가르치고 있습니다.

  • 홍익대 시각디자인, 컴퓨터 공학과 졸업
  • (전) (주)스포카 프로그래머
  • (현) 미림여자정보과학고 컴퓨터 교사
  • [1부] 코틀린 프로그래밍 언어
    •  
  • ▣ 01장: 들어가며
    • 코틀린 프로그래밍 언어
    • 인텔리J IDEA 설치
    • 첫 번째 코틀린 프로그램
    • 콘솔창을 이용한 출력과 입력
    • 코틀린 예제 코드 내려받기
    •  
  • ▣ 02장: 변수와 자료형
    • 변수의 개념
    • 변수와 상수 선언
      • _변수 선언
      • _상수 선언
      • _변수와 상수의 명명 규칙
    • 변수의 타입
      • _숫자 타입
      • _문자 타입
      • _문자열 타입
      • _논리값 타입
    • 배열 타입
    • Any 타입
    • 타입 변환
    • Nullable 타입
      • _조건문에서 null 값 대입 여부를 검사한 후 값에 접근
      • _안전 호출 연산자를 사용해 값에 접근
      • _엘비스 연산자를 이용해 값에 접근
      • _null 값이 아님을 보장하는 연산자를 사용해 값에 접근
      • _null을 반환하는 타입 변환 메서드
    • 주석
    •  
  • ▣ 03장: 연산자
    • 산술 연산자
    • 대입 연산자
    • 복합 대입 연산자
    • 단항 연산자
    • 비교 연산자
    • 논리 연산자
    • 인덱스 접근 연산자
    • in 연산자
    • 연산자 우선순위
    •  
  • ▣ 04장: 제어문
    • 분기문
      • _if 문을 이용한 분기
      • _if 표현식과 삼항 연산자
      • _when - case 표현식을 이용한 분기
    • 반복문
      • _while 문
      • _do - while 문
      • _for 문
      • _for 문을 이용한 배열과 컬렉션 순회
      • _break와 continue 명령어
    •  
  • ▣ 05장: 함수
    • 함수의 개념
    • 함수 정의
    • 함수 축약 정의
    • 기본 인자값 정의
    • 가변 인자 전달
      • _전개 연산자를 이용한 배열값 전달
    • 이름을 통한 인자값 전달
    • 람다 함수와 고차 함수
      • _람다 함수의 정의와 생성
      • _it을 이용한 람다 함수 내부에서의 인자값 접근
      • _함수 타입 추론
      • _함수의 반환값으로 람다 함수를 반환
      • _함수의 인자로 람다 함수를 전달
    • 함수 내부에 정의하는 로컬 함수
    • 패키지
    • 함수 오버로딩
    • 함수 참조 연산자
    • 범위 함수
    • 객체지향 프로그래밍
    •  
  • ▣ 06장: 객체지향 프로그래밍 기초
    • 객체지향 프로그래밍과 클래스
    • 클래스 정의
      • _클래스 생성자
      • _보조 생성자의 개념과 정의
      • _this 키워드를 이용한 객체 접근
    • 접근 제어자의 개념
      • _접근 제어자를 이용한 변수, 상수 및 함수 정의
    • 속성과 게터, 세터 메서드
    • Lazy와 lateinit을 이용한 속성값 초기화
    • 상속
      • _super 키워드를 이용한 부모 객체 접근
      • _메서드 오버라이드
      • _메서드 오버로딩
      • _추상 클래스
      • _Any 클래스
    • 인터페이스
      • _인터페이스와 다중 상속
    • 타입 확인과 타입 변환
      • _is, !is 키워드를 이용한 타입 확인
      • _as 키워드를 이용한 타입 변환
      • _업캐스팅과 다운캐스팅
      • _스마트 캐스트
      • _안전한 형변환을 위한 as? 키워드
    • object 키워드와 익명 클래스
    •  
  • ▣ 07장: 객체지향 프로그래밍 고급
    • 데이터 클래스
      • _equals 메서드와 hashCode 메서드 재정의
    • 열거형 클래스
    • 봉인 클래스
    • 내부 클래스
    • 확장 함수
    • 중위 표기법을 이용한 메서드 및 함수 호출
    • object 키워드와 싱글턴 클래스
    • companion object 키워드를 이용한 클래스 변수, 상수, 함수 정의
      • _const 키워드와 @JvmField 애너테이션의 활용
    • 유용한 패키지와 클래스
      • _문자열 클래스
      • _수학 패키지
      • _난수 클래스
      • _날짜 클래스
      • _시스템 클래스
    •  
  • ▣ 08장: 예외 처리
    • 예외 처리의 개념
    • try - catch 표현식 활용
      • _스택 트레이스와 예외 발생 이유 찾기
      • _여러 catch 블록의 중첩
      • _finally 블록
    • throw 키워드를 이용한 예외 발생
    • 표현식으로 사용되는 try - catch
    • 예외 클래스 정의
    • 제네릭의 개념과 활용
    •  
  • ▣ 09장: 제네릭
    • 제네릭을 적용한 제네릭 함수
    • 컬렉션의 개념
      • _mutable과 immutable
    •  
  • ▣ 10장: 컬렉션
    • 리스트
      • _리스트의 정렬
    • 집합
    • 컬렉션에서 제공하는 유용한 확장 함수
      • _forEach, forEachIndexed
      • _map
      • _filter
      • _partition
      • _reduce
      • _count
      • _zip
      • _associate
      • _groupBy
      • _distinct
      • _min, max, sum, average, count
      • _any, all, none
    • Iterable 인터페이스
    •  
  • ▣ 11장: 파일 입출력
    • 파일 입출력이란?
    • 파일 생성
    • 텍스트 파일 입출력
    • 이진 파일 입출력
    • 디렉터리 관련 작업 수행
    •  
  • [2부] 실전 안드로이드 프로젝트
    •  
  • ▣ 프로젝트 01: Hello Android
    • 안드로이드 스튜디오 설치와 가상 단말기 생성
      • _안드로이드 스튜디오 설치
      • _프로젝트 생성 및 실행
      • _완성된 프로젝트 불러오기
      • _화면 패널 소개
      • _AVD Manager를 이용한 안드로이드 에뮬레이터 사용
    • XML 기초 개념
    • 레이아웃 XML 파일과 다양한 리소스
      • _뷰와 뷰그룹 개념
      • _뷰와 식별자 할당
      • _res 폴더와 리소스 파일
      • _문자열 리소스 및 색상 리소스 파일에 정의된 리소스 사용
      • _R.java 파일과 리소스 식별자
      • _안드로이드에서 사용되는 가상 단위 DP
    • 첫 액티비티 코드 분석과 수정
      • _레이아웃 파일 생성 및 새 레이아웃 적용
      • _식별자를 이용한 뷰 객체 접근
      • _클릭 이벤트 리스너 등록
    • 로그캣과 토스트를 이용한 메시지 출력
      • _로그캣을 이용한 로그 메시지 출력
      • _토스트를 이용한 메시지 출력
    • 액티비티의 개념과 액티비티 생명주기
      • _단말기 상태 변경과 관련된 UI 상태 저장
    • 자주 쓰이는 뷰그룹
      • _LinearLayout 뷰그룹
      • _RelativeLayout 뷰그룹
      • _중첩 뷰그룹의 활용
    • 자주 쓰이는 뷰
      • _TextView, ImageView 뷰
      • _Button, ImageButton, ToggleButton 뷰
      • _EditText 뷰
      • _CheckBox, RadioButton 뷰
      • _Spinner 뷰
    • 동적 생성된 뷰를 이용한 레이아웃 구성
    • AndroidManifest.xml 설정 파일
    • 런처 아이콘 설정
    • 그레이들 파일 설정
    •  
  • ▣ 프로젝트 02: 오늘의 명언
    • 프로젝트 생성
    • 액티비티 생성과 레이아웃 구성, 명언 출력 기능 구현
    • 액티비티 정보 수정
    • SharedPreferences 인터페이스의 개념
      • _SharedPreferences 객체 접근
      • _Editor 객체를 이용한 데이터 저장, 수정, 삭제
      • _SharedPreferences 객체를 사용한 명언 데이터 저장
    • 명언 목록 액티비티 생성
    • 명시적 인텐트를 이용한 액티비티 이동
    • 명언 목록 액티비티 구성
    • 명언 편집 액티비티 구성
    • 명언 공유하기 기능 작성
    •  
  • ▣ 프로젝트 03: 날씨와 미세먼지
    • 프래그먼트의 개념과 활용
      • _프래그먼트에 필요한 초깃값 전달
      • _리스너 구현을 통한 프래그먼트와 액티비티 통신
    • 프로젝트 생성과 UI 구성
      • _프래그먼트 활용
    • 날씨 정보 API 서비스 신청
    • 인터넷 권한 설정과 네트워크 요청 전송
      • _비동기 작업을 정의하기 위한 AsyncTask 클래스 활용
      • _AsyncTask 클래스를 상속받는 네트워크 요청 클래스 작성
      • _Jackson 라이브러리 의존성 추가 및 JSON 문자열의 역직렬화
    • 미세먼지 정보 API 서비스 신청
    • 미세먼지 프래그먼트 생성
    • ViewPager를 이용한 프래그먼트 전환
    • 위치 정보 접근
    • 앱 UI 개선
      • _배경 그라데이션 추가
      • _애니메이션 리소스 활용
      • _벡터 이미지 활용
    • Retrofit 라이브러리를 이용한 HTTP 통신
    •  
  • ▣ 프로젝트 04: 뽀모도로
    • 서비스와 브로드캐스트의 개념
      • _서비스의 개념
      • _시스템에서 전달되는 브로드캐스트 메시지
      • _포어그라운드 서비스의 필요성
    • 프로젝트 생성과 UI 구성
    • 서비스 생성 및 알람 기능 구현
    • 사용 환경 개선
      • _알람 시간 선택 기능 추가
      • _알람까지 남은 시간을 액티비티 뷰로 표시
      • _다양한 미디어를 이용한 알림 설정
    • 설정 프래그먼트 추가
    • 상태바 메시지에 시간 정보 표시 및 갱신
    • 앱 UI 개선
      • _툴 바 커스터마이징 및 액션바 대체
      • _커스텀 뷰 작성 및 활용
    •  
  • ▣ 프로젝트 05: 퀴즈퀴즈
    • 프로젝트 생성
    • 내비게이션 드로어를 이용한 메뉴 생성
      • _헤더와 메뉴 구성
    • Quiz 클래스 정의 및 Room 데이터베이스 설정
    • XML 리소스를 이용한 로컬 데이터베이스 구성
      • _애셋 폴더 생성 및 퀴즈 데이터가 담긴 XML 애셋 파일 추가
      • _초기 퀴즈 데이터를 데이터베이스에 추가
    • 퀴즈 프래그먼트의 기초 기능 구현
    • 퀴즈 목록 프래그먼트 및 퀴즈를 수정, 추가, 삭제하는 액티비티 생성
    • 퀴즈 관리 액티비티 구현
    • 퀴즈 수정 및 삭제 기능 구현
    • 퀴즈 추가 기능 구현
      • _퀴즈 내용 검증 기능 구현
      • _퀴즈 추가, 수정, 삭제 이후 퀴즈 목록을 갱신하는 문제 해결
      • _퀴즈 풀이 프래그먼트 기능 개선
      • _퀴즈 목록 필터링 기능 추가
    • 퀴즈 풀이 화면의 타이머 기능 구현을 통한 제한 시간 설정
    • UI 개선
      • _프래그먼트 전환 애니메이션 추가
      • _커스텀 폰트 적용
      • _퀴즈 결과 프래그먼트 화면 수정
      • _카드뷰 활용
      • _피드백 이미지 및 선택지 버튼에 애니메이션 효과 적용