본문 바로가기 주메뉴 바로가기

출간도서

목록으로

편하게 읽는 자바 프로그래밍

출간일
2017-09-27
저자
박용우
분야
IT·컴퓨터
판형
크라운판(172 X 245)
페이지
743
ISBN
979-11-961119-0-8
종이책 정가
30,000원
전자책 정가
저자소개

박용우

필자는 상식적이고 체계적이고 논리적인 것을 좋아하는 그냥 보통의 소프트웨어 개발자입니다. 그리고 해야만 하는 것들을 쫓기보다는 하고 싶은 것을 쫓는 이상주의자이며 열정가입니다. 그래서 많은 공상과 시도를 하면서 오늘을 살았고 내일도 그렇게 살려고 합니다.
현재는 수학, 물리, IT의 기반지식을 공부하는 소모임인 “나무이론 연구소”를 통해서 공통 관심사를 가진 사람들과 함께 많은 공상을 하면서 지내고 있습니다. 또한 IT 교육서비스에 관심을 가지고 있어서 교육서비스 개발과 온/오프라인 교육장에서 소프트웨어 개발과 관련된 강의도 하고 있습니다.

최근에는 비전공자들 중에서 프로그래밍을 독학하려는 사람들이 점점 늘어나고 있는 상황입니다. 그 이유는 아마도 우리의 먹거리를 제공하는 미래의 시장이 사물 인터넷, 빅데이터, 인공지능, 기계학습, 보안처럼 소프트웨어를 이용하는 시장으로 재편되고 있기 때문일 것입니다.

그런데 비전공자 입장에서 이런 분야에 관심을 가지고 있다고 해서, 혼자서 컴퓨터 프로그래밍을 공부하는 것은 결코 쉬운 일은 아닐 것입니다. 왜냐하면, 프로그래밍 책은 여전히 기본적인 용어만으로도 비전공자에게는 생소한 내용일 수 있기 때문입니다. 

『편하게 읽는 자바 프로그래밍』은 비전공자들도 프로그래밍을 편하게 공부할 수 있도록 노력하고 있습니다. 프로그래밍에 필요한 용어들을 모두 상식적인 수준으로 이해할 수 있도록 하였습니다.

그렇다고 유아용 도서처럼 은유나 의인화를 한 것이 아니라 어려운 용어라고 해도 상식적이고 체계적인 방식으로 정면돌파하려고 하였습니다. 따라서 이 책은 입문자나 전문가 모두에게 도움을 드릴 수 있을 것입니다. 입문자에게는 쉬운 설명을 제공할 것이며 전문가들에게는 사고 체계와 개념을 정리할 수 있는 시간을 드릴 것입니다.

요즘에도 컴퓨터 프로그래밍을 어렵게 시작하는 입문자들이 많은 것 같습니다. 과거와는 비교도 안 될 정도로 좋은 교재와 강의들이 많은데도 말입니다. 아무래도 그 이유는 교재나 강의를 통해서는 여전히 해소되지 않는 부분이 있어서일 것 같은데요.

아마도 용어 하나하나의 의미와 그것을 사용해야 하는 이유, 즉 필요성에 대한 개념을 설명해주는 부분을 만나기 힘들기 때문이 아닐까 생각합니다. 필자가 컴퓨터 프로그래밍 공부를 어려워했던 이유는 간단했습니다. 다음과 같은 상식적인 이유에 대한 설명을 얻기가 어려웠기 때문인데요.


1. 무엇을(What) 배우게 될 것인가

2. 왜(Why) 그것을 배워야 하는가 그리고 그것의 장/단점은 무엇인가

3. 그럼 그것을 어떻게(How) 사용하면 되는가


예를 들어서, 우리가 함수를 배운다고 가정하면 필자는 다음과 같은 방식의 학습을 원했던 것입니다.


1. 함수란 무엇인가

2. 함수를 사용하는 이유는 무엇이고 그것을 사용함으로써 얻는 장점과 단점은 무엇인가

3. 그럼 함수를 만들고 함수를 사용하는 방법은 어떻게 되는가 그리고 그 기준은 무엇인가


너무나 당연한 설명방식일 것 같은데, 의외로 위와 같이 설명해 주는 책을 찾기가 어려웠습니다. 그래서 결국 필자는 오랜 시간 직접 경험과 많은 공상을 통해서 학습하는 방식을 사용해 왔습니다.

저는 제가 겪었던 답답함을 입문자들도 느낄 것이라 생각합니다. 어쩌면 경력자들에게도 그것이 가려운 부분으로 남아 있을 것입니다. 그들에게 필자가 경험을 통해서 얻은 정보가 도움이 되었으면 하는 바람으로 집필을 하게 되었습니다. 이 책은 입문자들뿐만 아니라 이미 프로그래밍에 경험이 있는 경력자들에게도 도움이 될 것입니다. 과거 저와 같은 상황에서 개념적으로 아직 답을 얻지 못한 경험자들이라면 이 책이 분명히 가려운 부분을 긁어 줄 것이라 생각합니다.

아무쪼록 이 책이 많은 분들에게 도움이 되었으면 합니다. 이 책 외에도 이후로 나올 다른 책을 통해서도 그동안 필자가 경험했던 알고리즘, 데이터베이스, 웹, 보안, 게임, 네트워크, 암호학, 방법론 등 다양한 분야에서도 도움을 드렸으면 좋겠습니다.


나무이론 연구소(www.namoolab.com) 소장

뉴렉(newlec) 올림

머리말


1부 컴퓨터 프로그래밍

1장 컴퓨터 프로그래밍 시작하기

1. 프로그램의 의미

2. 플랫폼

3. 컴퓨터 프로그램

4. 컴퓨터

5. CPU의 기능

6. 컴퓨터 프로그램 만들기

7. 컴퓨터 프로그램 실행하기

8. 코드와 언어

9. 코드의 변화

● 어셈블리어

● 컴파일 언어

10. 컴파일 언어

11. 개발환경 구축하기

● 자바 컴파일러 다운로드하기

● 자바 컴파일러 설치하기

● 설치된 컴파일러 확인하기

● 컴파일러 리졸빙과 path 환경변수


2부 자바 프로그래밍

1장 자바 언어의 기본 규칙 이해하기

1. 성적관리 프로그램 작성하기

● 자바 코드 컴파일하기

2. 기본 문법 1 : 자바는 두 개의 영역을 반드시 가진다

● 함수 영역

● 클래스 영역

3. 기본 문법 2 : 문장은 세미콜론(;)으로 구분해 주어야 한다

4. 기본 문법 3 : 컴파일러가 모르는 문자는 반드시 선언하고 사용해야만 한다

5. 가독성을 높이는 코드

● 변수명은 저장할 값의 의미를 가지도록 작성해야만 한다

● 코드 영역의 중첩 관계가 쉽게 파악되도록 작성해야 한다

● 코드에 주석을 다는 것은 코드 해석에 많은 도움을 준다

2장 IDE 이용하기

1. 통합 개발 환경

2. 이클립스(Eclipse) IDE

3. 이클립스 다운로드

4. 퍼스펙티브(Perspective) 선택

5. 프로젝트 만들기

6. 소스 코드 작성하기

7. 코드편집기의 편리한 기능

● 코드 들여쓰기/내어쓰기 기능

● 코드 자동 정렬 기능

● 주석 추가/제거 기능

8. 컴파일하기와 실행하기

3장 값과 형식

1. 값의 종류

2. 값의 형식지정

3. 형식 변환

4. 값의 크기와 단위

5. 정숫값의 표현 범위

6. 실숫값의 표현 범위

7. 실숫값의 비트구조

● 실숫값의 표현방식

● 부동 소수점(Float Point)

● IEEE 754 방식

● IEEE 754 연습할 때

8. 진법 변환방법

● 2진수를 10진수로 바꾸기

● 실숫값 2진수를 10진수로 바꾸기

● 10진수를 2진수로 바꾸기

● 2진수를 16진수로 바꾸기

9. 진법에 따른 숫자 표현

4장 연산자

1. 산술 연산자와 대입 연산자

2. 비교 연산자

3. 논리 연산자

4. 비트 연산자

5. 단항 연산자

6. 복합 대입 연산자

7. 연산자 우선순위

8. 컴파일 언어와 하드웨어의 관계

5장 콘솔 입/출력 플랫폼

1. 콘솔(Console)

2. 콘솔 입/출력

3. 입/출력 장치를 위한 인터페이스

4. 입/출력 API 함수

5. 플랫폼의 종류와 드라이버

6. 자바 언어와 플랫폼의 탄생

7. 자바 실행환경과 WORA

8. 콘솔 입/출력 API와 스트림

9. 출력 스트림 개체와 객체

10. 문자 코드

11. 문자 출력하기

12. 문자열 출력하기

13. 이스케이프 문자

14. 숫자 출력하기

15. 문자 입력받기

16. 성적 입력받기

6장 제어구조

1. 프로그램의 흐름 제어

2. 조건에 따른 흐름 제어 if 문

3. 배타적인 흐름을 만드는 else if 문

4. 나머지 조건을 책임지는 else 문

5. 메뉴를 구현할 때는 switch 문으로

6. 제어구조를 벗어나려면 break

7. 값의 유효성을 확인하기 위한 if 와 while

8. 반복 검사는 while

9. 선행처리 반복에는 do-while

10. while을 이용해 정해진 횟수 반복하기

11. 정해진 횟수 반복에는 for

12. 바람직하지 않게 사용되는 for 문

13. 합을 구하는 프로그램 예제

14. 절차에만 의존하는 프로그래밍

15. 별 찍기 예제와 주먹구구식 프로그래밍

16. 혼자 해보는 숙제

7장 배열

1. 일괄처리를 위한 저장소 배열

2. 일괄 처리가 불가능한 변수 목록

3. 배열을 이용한 데이터관리

4. 임시 변수를 활용한 배열의 사용

5. 배열을 이용한 성적입력

6. 성적 입력방식 개선하기

7. 배열의 성적 출력하기

8. 생명주기와 가시영역 문제들

9. 생명주기와 가시영역 바로 잡기

10. 이차원 배열을 이용해 오목 프로그램 만들기

11. 다차원 배열을 이용한 오목 프로그램

12. 상수형 변수와 열거형

● 변수를 이용해서 상수를 집중화화기

● 변수를 이용해서 상수에 의미를 달기

● 열거형

13. 2부 마무리하기

● 배열 초기화

● 톱니형 배열


3부 구조적인 프로그래밍

1장 함수

1. 함수는 코드를 나눌 수 있다

2. 자바로 함수 정의하기

● 매개 변수와 반환값이 모두 없는 함수 정의하기

● 매개 변수는 있고 반환값이 없는 함수 정의하기

● 매개 변수와 반환값이 모두 있는 함수 정의하기

3. 구조적인 프로그래밍

● 구조적인 성적관리 프로그램

● main 함수부터 작성하기

● 함수 정의와 선언

4. 성적관리 함수 정의하기

● 매개변수와 참조

5. 메뉴입력 함수 구현하기

6. 성적출력 함수 구현하기와 함수 오버로딩(Overloading)

7. 성적입력 함수 구현하기

● 값 변수와 참조 변수

8. 영문 함수이름 명명규칙

9. 재귀함수

2장 데이터 구조화

1. 사용자형식

2. Exam 개체 정의하기와 데이터 구조화

3. printExam() 함수 수정하기

4. Exam 배열 생성하기와 main() 함수 수정하기

5. inputExam() 함수 수정하기

6. index를 품은 배열

7. 전역 변수·

3장 함수 재사용과 캡슐화의 필요성

1. 재사용 파일 만들기

2. 재사용 파일 사용하기

3. 함수 수납방법과 캡슐화

4. 캡슐을 깨는 행위와 보호모드

5. 이름 충돌과 패키지의 필요성


4부 객체지향 프로그래밍

1장 객체 중심의 프로그래밍

1. 객체지향 프로그래밍 - 표현방식을 바꾸자

2. 인스턴스 메소드와 스태틱 메소드

● print 함수 수정하기

● input 함수 수정하기

3. 생성자와 생성자 오버로드

4. 필수 계층구조와 UI와 Entity 분리

5. HAS A 관계

● ExamConsole has a Exam

6. print 메소드 구현과 getter 메소드의 필요성

7. input 메소드 구현과 setter 메소드의 필요성

8. Composition과 Association Has A 관계

9. Aggregation Has A 관계

● Exam 객체 집합을 이용하는 input 메소드 구현

● Exam 객체 집합을 이용하는 print 메소드 구현

10. 메소드 호출 스택과 힙

2장 재사용방법 알아보기

1. 재사용하기

● Exam 클래스 재사용하기

2. Has A 관계와 Is A 관계

3. 물려받기 – Is A 상속

4. 수정하기 – 오버라이드

5. this와 super

● 이클립스 기능을 이용해서 avg 메소드 오버라이딩

6. 부모 객체 초기화

7. 유연한 참조형식

8. 메소드 호출 규칙

9. 자바 플랫폼 살짝 맛보기

3장 추상화

1. 추상 클래스

2. Exam 클래스 추상화하기

3. 추상 메소드

4. ExamConsole 추상화

● 객체 생성 문제

● 추상화를 위한 점검 프로그램 만들기

● input / print 메소드 재사용 문제

4장 인터페이스

1. interface를 이용한 ExamConsole 재사용

2. interface를 구현하는 방법 1

3. interface를 구현하는 방법 2 – 다중 상속

4. interface를 구현하는 방법 3 – 중첩 클래스

● instance 중첩 클래스

● static 중첩 클래스

5. interface를 구현하는 방법 4 – 익명 클래스

6. interface를 구현하는 방법 5 – 람다식

● 람다식 기본 문법·


5부 자바 언어의 도구

1장 래핑 클래스

1. Object 클래스

2. Number 클래스와 Auto Boxing/UnBoxing

3. String 클래스

● 문자열 비교

● 문자열 변환

● 문자열 조작하기

● 문자열 더하기와 StringBuilder

2장 콜렉션

1. 예제 준비하기

2. 점진적으로 배열 크기 늘리기

3. 데이터 수집자(콜렉션) 분리하기

● ExamList 클래스 만들기

4. 범용적인 데이터 수집자(콜렉션) 만들기

5. 범용 콜렉션의 문제점과 제네릭 콜렉션

● 만능 콜렉션의 단점

● 미완성 콜렉션

● 제네릭 콜렉션 만들기

6. 콜렉션의 데이터 열거 서비스

● 열거 서비스 추가하기

7. 다중 스레드에서 열거자의 문제와 Iterator

● 동기와 비동기

● 비동기 방식으로 실행하기

● 다중 스레드에서의 열거자 문제

● 공유 자원의 동기화

● current를 개별화

● Iterable 인터페이스와 foreach 반복문

8. 자바가 제공하는 콜렉션들

● Set 계열의 콜렉션

● List 계열의 콜렉션

● Map 계열의 콜렉션

3장 예외처리

1. 예외와 예외처리

2. 예외 처리하기

3. 예외 정의와 통지하기

4. 선택적으로 예외 처리하기

5. 마무리 처리하기


맺음말

닫기

출판상담문의

오전 9시 ~ 오후 6시

070-4651-3730

세상과 책을 잇는
마중물같은 출판사
지식과감성#

고객센터 전화상담

070-4651-3730

평일 오전 9시 ~ 오후 6시
(점심시간 : 11시 25분 ~ 1시)

1:1 온라인 상담

지식과감성# 카카오플러스 친구 추가

메일 또는 카카오톡으로 상담 신청 가능

원고 및 파일전송

웹하드 접속하기
아이디 : ksbookup 비밀번호 : ksbook