스크랩

구간

자바프로그래밍 기초부터 하나씩

RALPH BRAVACO.SHAI SIMONSON 저 | 김응성외 역 | 아이티씨 | 2010년 09월

베스트셀러

북트리

정가
$64.00
판매가
$46.66 (27%↓) 최저가 보상
적립금
$0.93 (2%P)

품절된 상품입니다.

이 책을 꼭 원하시는 고객님께서는 아래 "상품문의"를 클릭 후 구매의사를
알려주세요. 책이 확보 될 경우 연락 드리겠습니다.

북카트 바로구매 위시리스트

평점 -  ·  리뷰 0

리뷰 쓰기

861쪽 280 x 210 (㎜)

이 상품에 궁금하신점이 있으세요? 1:1상담문의

추천inside
Adobe Flash Player 가져오기

이 분야의 베스트셀러

아래의 도서와 구매하시면 이 도서들의 적립금을 즉시적용해 드립니다.

책 소개

출판사 리뷰

‘자바 프로그래밍: 기초부터 하나씩’은 프로그래밍의 기초로부터 시작하여 점차적으로 객체지향에 대한 내용을 설명한다. 본서의 넓은 범위의 주제는 초급이나 중급 정도의 프로그래밍 강의에 적합하다. 본서는 문제를 해결하려는 열정과 참고 견딜 수 있는 의지 이외에 다른 필요조건은 없다.

본서의 주요 특징

이 책은 다음 세 가지 원칙에 근거하여 작성되었다.

1. 기초 우선

본서의 목적은 ‘객체 우선’이나 ‘객체 지연’이 아니라, ‘기초 우선’이다. 이 책에서의 방법은 밑에서부터 위로 올라가는, 즉 대부분의 프로그래밍 언어에서 기본 개념인 변수, 선택문, 반복, 메소드부터 설명을 시작한다. 일단 학생들이 기본 제어 구조를 이해한다면 클래스를 구성하기 위해서 제어를 사용할 수 있게 된다. 반복이나 선택문과 같은 프로그래밍 도구는 객체지향 패러다임에 한정된 속성은 아니다. 사실상 Ada로부터 ZPL까지의 모든 프로그래밍 언어는 이들 도구를 제공해준다. 본서는 클래스를 구성하는데 그러한 도구를 사용하기 전에 우선 그 도구에 대한 일반적인 특성을 설명한다.

본서의 필자들의 강의 경험으로는 이와 같은 바닥부터 위로 올라가는 상향식(bottom-up) 접근법이 교육학적으로 강의를 하는 데 가장 좋은 방법이라는 것을 확신하게 되었다. 집을 짓기 전에 목수 일에 사용하는 도구의 사용법을 배워야 한다는 것은 확실하다. 필자들은 클래스를 작성하는 데에도 같은 원리가 적용되어야 한다고 믿는다. 자바를 ‘기초부터 시작하기’로 공부해야 한다.

2. 기본 프로그래밍 개념과 객체지향 개념의 독자적인 소개

본서는 학습 단위로 이루어져 있다. 우선 기본 프로그래밍 구조를 다루고, 그 다음에 객체지향 프로그래밍에 대해 소개하고 있다. 그렇기 때문에 여러 가지 과정에 따라 강의를 진행할 수 있다. 예를 들어, 자바를 보조 언어로 교육해야 하는 강의에서는 바로 ‘2부: 객체 지향 프로그래밍의 원리’에서부터 수업을 진행할 수 있다. 대부분의 프로그래밍 언어에서의 기본(선택문, 반복, 메소드, 배열)은 1부에 존재하고 책의 전체 영역에서는 다루고 있지 않다. C++와 같은 다른 언어에 익숙한 학생은 자바에서의 기본 제어 구조를 쉽게 찾을 수 있다.

3. 많은 예제

예제를 다루어 봄으로써 이해가 가능하고, 이해를 해야 추상적인 개념이 머릿속에 잡힌다. 전문적인 수준의 추상 개념을 즉시 이해할 수 있도록 학생들에게 기대하는 것은 비현실적이다. 개념에 대한 소개를 얼마나 훌륭하고 명확히 표현할 수 있느냐에 상관없이, 경험이 많은 교강사는 예제를 사용하여 학생들이 내용에서 일반적인 개념을 추출해낼 수 있도록 할 것이다. 본서에는 완전히 구현된 프로그램의 형태로 된 많은 예제가 포함되어 있다. 또한 초급자 과정을 강의해본 필자들의 경험으로 학생들은 넷 또는 다섯 페이지에 걸친 예제는 거의 읽지 않는다는 것을 확신하게 되었다. 그러므로 본서에서는 예제를 짧고 간결하며, 종종 즐거운 예제가 되도록 노력하였다.


특징 내용

각 장에는 다음과 같은 특징 내용들이 있다.

1. 목적 - 각 장은 학생들이 그 장에서 배워야 할 개념들에 대한 목록으로 시작한다.

2. 요약 - 각 장의 결론으로 그 장의 기본 개념에 대한 요약 내용을 복습한다.

3. 오류 예방 - 각 장의 끝에서 일반적으로 발생하는 버그에 대한 요약과 디버깅, 그리고 이를 피할 수 있는 가장 좋은 방법에 대한 간단한 내용들을 설명한다.

4. 예제 - 예제는 각 장에 골고루 분포되어 있다. 번호가 붙어 있는 거의 모든 예제는 독립 프로그램이다. 많은 예제들이 행별로 분석되어 있다. 각 예제는 이해하기 쉬운 형식으로 구성되어 있는데, 문제에 대한 기술, 자바 해법, 전형적인 출력, 그리고 마지막으로 해법에 대한 프로그램 설명으로 이루어져 있다.

5. 연습 문제 - 각 장에는 많은 연습 문제와 프로그래밍 문제가 포함되어 있다. 연습 문제와 프로그래밍 문제의 형식과 난이도는 여러 가지이다. 연습 문제는 다음과 같이 구성되어 있다.

- 단답형 문제 - 기본적인 이해도 점검
- 디버깅과 추적 문제 - 컴퓨터의 사용 없이 실력 점검
- 간단한 프로그래밍 문제 - 각 장의 개념을 보강
- 복잡한 프로그래밍 문제 - 독창성과 알고리즘 개발 능력 요구


내용

본서는 다음과 같이 1부, 2부, 3부로 나뉘어 있다.

1부 기본 요소들, 2부 객체 지향 프로그래밍의 원리, 3부 자바 클래스

1부 기본 요소들
1부는 대부분의 프로그래밍 언어에 존재하는 표준 프로그래밍 개념인 저장과 제어 구조로 구성되어 있다.

1. 컴퓨터와 자바 소개
1장은 컴퓨터 시스템의 하드웨어와 소프트웨어에 대한 간단한 소개를 하고 있다. 이 장에는 프로그래밍 언어와 컴파일러, 자바 가상 머신에 대한 내용도 포함되어 있다.

2. 표현식과 데이터 형식
2장은 문자열 출력을 표시하는 몇 가지 응용으로부터 시작하여 점차적으로 표현식의 값을 구하는 예를 설명한다. 이 장에는 원시 데이터 유형인 int, double, char, boolean에 대한 소개도 포함되어 있다.

3. 변수와 대입
변수가 이 장에서 소개된다. 특히 3장은 다음의 세 가지 문제에 대해 설명하고 있다.

- 프로그램에서 데이터를 위한 저장 장소를 어떻게 얻을 수 있는가?
- 프로그램이 데이터를 저장하는 방법은?
- 프로그램이 저장된 데이터를 어떻게 사용할 수 있는가?

자바의 Scanner 클래스가 대화식의 입력을 위해 사용된다.

4. 선택과 결정: if 문
4장은 다음과 같은 선택문으로 구성된다.

- if 문
- if-else 문
- switch 문

이 장에서는 또한 중첩 if 문에 대한 설명도 포함되어 있다.

5. 반복
이 장에서는 먼저 while 문에 대한 설명을 하고, 그 다음에 do-while 문, 마지막으로 for 루프에 대해 설명한다. 이 장은 각 루프의 유형이 적절하다고 판단되었을 때 루프들 사이의 문체상 차이점에 대해서도 설명한다. 무한 루프와 ‘하나 차이(off by one)’로 인해 루프에 발생되는 일반적인 오류도 다루어본다. 이 장에는 중첩 루프가 있는 응용의 예가 포함되어 있다.

6. 메소드
메소드는 입력을 받아들이고 값을 반환하는 ‘블랙박스’로 생각할 수 있다. 이 장에서 자바의 Math 클래스에 존재하는 많은 메소드를 소개한다. 이 장의 대부분은 ‘직접 만든’ 메소드를 다루고 있다. 아직은 클래스와 객체를 소개하지 않았기 때문에, 모든 메소드는 static이다.

7. 배열과 리스트: 한 개의 이름을 사용하여 많은 데이터 처리
이 장은 배열과 배열 생성을 다루고 있다. 이 장에서는 먼저 참조의 개념을 소개하고, 정렬과 검색에 대한 소개도 한다. 2차원 배열에 대해 설명한 후에 15 퍼즐의 사례 연구로 끝을 맺는다. 사례 연구는 1부에서 소개된 대부분의 개념을 사용한다.

2부 객체 지향 프로그래밍의 원리
2부의 핵심은 객체지향 패러다임이다. 1부에서 설명한 도구들을 마스터한 학생들은 객체지향 프로그래밍의 원리에 집중할 수 있게 된다. 2부는 다음 장들로 구성되어 있다.

8. 객체와 클래스 I: 캡슐화, 문자열
8장은 캡슐화, 클래스, 객체에 대해 소개하고 있다. 먼저 클래스와 객체에 대한 소개는 다음 내용이 포함된 몇 개의 자바 클래스의 예로 구성되어 있다.

- Random
- String
- StringBuilder
- File
- DecimalFormat

이 장에서는 간단한 I/O를 위해 텍스트 파일을 사용하는 방법도 배운다.

9. 객체와 클래스 II: 사용자 클래스 작성
8장에서 학생들은 몇 개의 미리 패키지화된 클래스를 사용하여 객체와 클래스에 대해 배운다. 이 장에서 학생들은 자신만의 클래스를 작성하는 방법을 배운다. 이 장에서는 캡슐화와 정보 은닉, 그리고 이전 장에서 사용되었던 public과 static처럼 몇 개의 생소한 단어에 대한 의미를 설명한다. 마지막 사례 연구에서는 myPod라고 이름을 붙인 간단한 오디오 플레이어를 만들어본다.

10. 상속
이 장에서는 객체지향 프로그래밍의 두 번째 원리인 상속에 대해서 소개하고, 상속과 합성에 대해 비교해본다. 또한 모든 클래스에 상속되는 Object 클래스와 Object 메소드에 대해서 설명한다. 이 장에는 추상 클래스와 인터페이스에 대한 설명도 포함되어 있다.

11. 다형성
2부의 마지막 장인 11장에서는 다형성에 대해 설명한다. 만약 상속이 계층에서 클래스의 ‘동일성’을 강조한다면, 다형성은 차이점을 강조한다. 이 장에서는 다형성과 인터페이스를 사용한 동적 바인딩과, Object에 관련시켰을 때의 다형성에 대해 설명한다.

3부 자바 클래스
3부는 대부분의 내용이 기술적인 것으로 되어 있다. 여기서는 래퍼 클래스와 예외 클래스, 스트림 클래스, 임의 접근 파일을 위한 클래스를 다루어본다. 또한 스택과 큐, 연결 리스트와 같은 몇 개의 기본적인 데이터 구조와 제네릭에 대해 소개한다.

12. 래퍼 클래스와 예외 클래스
12장은 래퍼 클래스의 소개로 시작한다. 이 장에는 오토박싱과 언박싱에 대한 소개도 포함되어 있다. 장의 나머지는 자바의 Exception 계층에 대한 설명으로 되어 있다. 그리고 throw-catch 구조, finally 블록, 확인과 비확인 예외, throws 절, Exception 클래스를 생성하는 방법에 대해서도 설명한다.

13. 스트림 I/O와 임의 접근 파일
13장은 대부분 기술적인 내용으로 되어 있는데, 바이트 스트림과 문자 스트림 클래스, 그리고 바이트 스트림 계층과 문자 스트림 계층 사이의 연결에 대한 선택적인 설명을 하고 있다. 이 장에서는 텍스트 파일과 이진 파일에 대해 비교하고 이진 파일 I/O의 예와 객체 직렬화에 대한 설명도 포함되어 있다. 임의 접근 파일 또한 이 장에서 다루고 있다.

14. 데이터 구조와 제네릭
14장은 자바의 ArrayList 클래스와 제네릭에 대한 소개로 시작한다. 그리고 스택, 큐, 연결 리스트의 몇 가지 기본적인 데이터 구조에 대한 설명을 한다. 각 데이터 구조 유형에 대한 구현도 다루어본다.

부록 A: 자바 키워드
부록 B: ASCII 문자
부록 C: 연산자 우선순위
부록 D: 자바 문서(Javadoc)
이 부록은 자바 소스 파일로부터 자동적으로 문서를 만들어 내기 위해 썬(Sun)의 Javadoc 도구를 사용하는 방법에 대해 설명한다.
부록 E: 패키지(Package)
부록 E는 많은 클래스가 포함된 큰 범위의 응용을 조직화하기 위한 패키지의 사용에 대해 설명한다.


교강사에게

본서의 사용 방법

이 책은 강의를 듣는 학생들의 수준에 맞도록 유연성이 있게 설계되었다.

- 자바 프로그래밍에 대한 대학 수준의 소개를 위해서는 1부와 2부를 강의하며, 3부의 내용은 진도와 강의의 목적에 따라 선택할 수 있다. 첫 강의에서는 스트림 클래스에 대한 장(13장)을 생략할 수 있다. 기본적인 텍스트 파일에 대한 I/O는 8장에서 다루고 있다.
- 이미 프로그래밍 언어를 이해하고 있는 학생들을 위한 강의에서는 2부부터 시작하고 1부는 필요할 때마다 참조하는 방식으로 할 수 있다. 이 같은 접근법은 ‘객체 우선’을 채택한 교강사도 사용할 수 있을 것이다.
- AP 과정에 있는 고등학생에 대해서는 1부와 2부를 다루고, 3부는 필요한 자바 주제를 다루는 장만 선택하여 강의할 수 있다. 13장은 생략할 수 있다.

배열은 대부분의 프로그래밍 언어에서 일반적으로 사용하는 저장 구조이다. 그러므로 1부에 배열에 대한 주제를 포함시켰다. 한편, 자바 배열은 객체이다. 이 책에서는 배열(7장)이 ‘8장. 객체와 클래스 I: 캡슐화, 문자열’ 후반까지 계속 설명될 수 있도록 1부의 끝에서 기술하고 있다. 7장에는 2차원 배열에 대한 설명도 포함되어 있다. 이 부분은 연속성에 문제되지 않고 연기가 가능하다.
데이터 구조의 구현이 객체지향 패러다임에 많이 의존적이기 때문에 3부의 끝에서 간단한 데이터 구조(스택, 큐, 연결 리스트)를 다루고 있다.

각 장 연관 차트

다음 차트는 일반적인 각 장의 선행 조건을 보여주고 있다. 많은 다른 유형의 강의를 구성하는 데 이 차트를 사용할 수 있다. 1장부터 6장까지가 8장에 대한 선행 조건으로 보이지만, 객체에 대한 설명부터 시작하고자 하는 교강사에게는 1장-3장을 강의하고 8장으로 바로 건너뛰어도 되며, 필요할 때 4장-6장을 설명하면 된다.

온라인 자료

‘자바 프로그래밍: 기초부터 하나씩’에 관한 온라인 자료들은 원서의 웹사이트인 www.mhhe.com/ bravaco와 ITC 홈페이지에서 찾아볼 수 있다. 웹사이트에서는 다음 자료를 찾아볼 수 있다.

- 본서에서의 모든 프로그램 예제에 대한 코드와 데이터
- 강의 파워포인트 슬라이드
- 본서에서의 모든 그림 파일
- 연습 문제에 대한 해답이 포함된 교강사 매뉴얼

이들 자료에 접근하기 위해서는 McGraw-Hill 한국 지사나 도서출판 ITC에 연락해보기 바란다.


학생들에게

학생은 유명한 객체지향 프로그래밍 언어인 자바를 공부하려고 할 것이다. 다음은 자바를 공부해야 하는 몇 가지 이유이다.

- 자바와 컴퓨터 프로그래밍에 관한 지식은 학생의 학문 분야(경영, 정보 기술, 과학, 등..)에서 필요하다.
프로그래밍은 유용한 도구이다. 본인이 프로그래머가 되고 싶지 않더라도 이 책은 학생들에게 프로그래머가 무엇을 하는지에 대한 이해를 제공할 것이다. 이 책의 세부적인 내용을 잊은 훨씬 후라도 학생이 배웠던 원리로 인해 프로그래머와 더 좋은 의견 교환을 할 수 있게 될 것이다.

- 재미있는 직업을 확보하고 싶을 것이다.
자바는 시장성이 높은 기술이다. 많은 상호 작용 웹사이트들은 자바를 사용하여 작성된다. 배울 것이 너무나 많고 자바의 학습 곡선은 가파르다. 하지만 연습을 많이 하면 능숙해질 수 있다.

- 컴퓨터 과학 분야의 대학 전공 공부를 시작하고 있다.
화학이나 물리학과 같은 다른 과학 분야의 초급 과정과는 달리, 컴퓨터 과학에서의 첫 번째 과정은 일반적으로 학문 분야에 대한 개요가 아니라 프로그래밍과 훈련 도구에 대한 열띤 소개이다. 컴퓨터 과학의 개요를 제공하는 넓은 범위를 다루는 강의가 있기는 하지만, 이들 강의는 드물고, 대부분의 컴퓨터 과학 프로그램은 우선적으로 프로그래밍을 교육하는 전통을 유지해오고 있다.

학생이 배울 수 있는 많은 프로그래밍 언어 중 자바가 첫 번째라면 매우 좋은 경우가 된다. 좋은 첫 번째 언어란 다른 언어를 빠르게 배울 수 있게 하는 풍부한 특징을 가지고 있으며, 지루한 노력을 하지 않고 복잡한 알고리즘을 구현하는 데 충분히 강력한 것이어야 한다. 좋은 언어로 인해 학생들은 추상적인 개념을 쉽게 구현하기 위한 충분한 능력을 갖게 된다.

가장 좋은 첫 번째 언어란 없다. 그러나 Scheme, C, C++, C#, Visual Basic, Python, 그리고 물론 Java와 같은 많은 좋은 언어들이 존재한다. 각 언어에는 그 언어를 좋아하는 팬뿐만 아니라 비방자들도 있다. 다른 프로그래밍 언어에서처럼 자바도 첫 번째 언어로서 강점과 약점을 가지고 있다.

강 점

- 인터넷 친화성
- 플랫폼 독립성
- 신뢰성
- 안정성
- 세련된 GUI와 이벤트 구동 패러다임
- 객체지향 언어로서 기본 개념부터의 설계
- 대중성
- 빠르고 효과적인 코드의 재사용을 가능하게 하는 방대한 양의 객체 라이브러리

약 점

- 초급자를 위협하는 방대한 양의 객체 라이브러리
- 가파른 학습 곡선, 특히 GUI와 이벤트 구동 모델
- 표준 컴파일 언어에 비하여 느린 실행

완벽한 선택이란 없지만, 자바는 확실히 좋은 선택이라고 할 수 있다. 많은 사람들이 자바를 ‘타고난’ 프로그래밍 언어라고 생각하며, 자바는 산업이나 강의실에서 곧 사라지지 않을 것이다. 자바는 훌륭한 첫 번째 언어이다.

자바를 유창하게 사용하는 유일한 방법은 프로그램을 작성하는 것이다. 학생은 강의를 잘 들어야 하고, 책을 읽어야 한다. 그리고 의문에 여지없이 실습을 해야 한다. 연습과 인내력으로 능숙하고 성공적인 프로그래머가 될 수 있고, 그렇게 하다보면 약간의 재미도 느낄 수 있다. 여행을 즐기기 바란다.

저자 소개

  • 저자 : RALPH BRAVACO.SHAI SIMONSON
저자 : 랄프 브라바코
  

저자 : 샤이 시몬슨
  

역자 : 김응성
현재 경기공업대학 컴퓨터정보시스템과 교수이다.  

목차

top