Top

자바 객체지향 프로그래밍 입문 2/e

  • 지은이음두헌
  • ISBN : 9791161756493
  • 40,000원
  • 2022년 05월 31일 펴냄
  • 페이퍼백 | 676쪽 | 188*235mm
  • 시리즈 : 프로그래밍 언어

책 소개

동영상 강의 / 소스 코드

동영상 강의는 여기에서 확인하실 수 있습니다.

소스 코드 파일은 여기에서 확인하실 수 있습니다.

요약

기초 프로그래밍을 학습한 독자를 대상으로 제대로 된 객체지향 프로그래밍의 개념과 자바 문법 요소들을 전달해 두 마리 토끼를 한 번에 잡는 것을 목표로 한다. 대부분의 자바 입문서의 구성이 문법 위주의 버틈업(bottom-up) 형식인 반면, 이 책의 구성은 이어지는 실습으로 카드게임을 완성해 나가면서 그 안에서 자바의 주요 문법을 충실하게 다루는 톱다운(top-down) 형식이다. 또한 독자들이 재미있고 쉽게 접근할 수 있도록 책의 앞부분부터 비주얼한 실습을 제공하는 기본 코드 틀을 도입해 활용한다. 세상에 공짜가 없듯이 이 두 가지 구성 방식이 예제 프로그램을 다소 길고 복잡하게 만드는 요인이지만, 동영상 강의를 제공해서 부드럽고 효율적으로 학습을 진행할 수 있도록 보완했다.

이 책에서 다루는 내용

첫째, 대부분 책은 자바 언어의 문법책이지만 이 책은 자바 언어를 사용하는 논술책이다.
영어를 10년을 배워도 영작과 회화는 초보 수준인 경우가 많다. 이는 영문법에 치중해 공부했기 때문이다. 영작과 회화를 먼저 배우면서 그 안에서 자연스럽게 문법을 배우는 10년을 보냈다면 미국 사람과 대등한 영어 실력을 갖출 수 있지 않았을까? 이 책은 이어지는 실습으로 카드게임을 완성해 나가면서 그 안에서 필수 문법을 다루는 톱다운 구성을 채택했다.

둘째, 대부분 책은 콘솔 프로그램 예제를 사용하지만 이 책은 비주얼한 윈도우 프로그램 예제를 사용한다.
많은 책이 사용하는 예제는 텍스트 기반으로 동작하는 콘솔 프로그램이다. 나는 객체지향 개념과 자바 고급 기능을 모두 활용해서 구현된 사용자 인터페이스 라이브러리를 활용하고 시각적으로 확인해 보는 것이 객체지향 개념을 제대로 이해하는 데 필수라고 생각한다.

셋째, 이 책은 동영상 강의를 제공한다.
이어지는 실습으로 카드게임을 완성해 나가고 시각 사용자 인터페이스 라이브러리를 활용한다는 것은 장을 거듭할수록 예제 프로그램이 길고 복잡해 진다는 것을 의미한다. 하지만 이 책이 제공하는 동영상 강의가 이 문제의 많은 부분을 해결해 줄 것으로 판단한다.

이 책의 대상 독자

◆ 기초 프로그래밍 학습 이후 자바로 객체지향 프로그래밍에 입문하고자 하는 독자
◆ 자바를 학습한 적은 있지만, 막상 객체지향 프로그래밍의 개념이 잘 와 닿지 않는 독자
◆ 모바일 프로그래밍, 게임 프로그래밍, 서버 프로그래밍 등으로 가기 전에 객체지향 개념과 기술을 확고하게 정립해서 첫 단추를 잘 끼우고 싶은 독자

이 책의 구성

단계적으로 이어지는 실습 과제를 중심으로 구성됐다. 1장에서는 실습 환경을 구축하고 클래스와 객체의 개념을 소개해서 간단한 콘솔 입출력 기반의 응용프로그램들을 작성해 본다. 2장에서는 이 책에서 제시하는 기본 코드 틀을 이용해서 간단한 윈도우 기반 응용프로그램을 작성하는 방법을 실습한다. 3장에서 사각형 클래스를 정의해서 활용해 보고 클래스와 객체의 개념을 정립한다. 4장에서는 이 사각형 클래스를 상속받는 카드 클래스를 정의해서 활용해 보고 상속의 개념을 정립한다. 5장에서는 4장의 카드 클래스를 포함하는 카드 파일Card Pile 클래스를 작성해서 활용해 보고 다형성의 개념을 정립한다. 6장에서는 5장의 카드 파일 클래스를 상속받는 네 종류의 카드 파일 클래스들을 정의하고, 앞선 장들에서 정립한 개념들을 종합해 활용하는 카드게임을 완성한다. 자바의 문법적인 요소들은 실습 과정에서 접할 때마다 설명하고, 보충 문법절에서 추가로 다룬다.

저자/역자 소개

지은이의 말

이 책을 저술하기 전에 책의 콘셉트를 잡고자 나름대로 시장조사를 수행했다. 그 결과, 거의 모든 자바 입문서가 자바를 첫 언어로 시작하는 독자를 대상으로 기초 프로그래밍부터 시작하는 문법 위주의 구성을 채택하고 있음을 알게 됐다. 교육 경험상, 자바는 첫 언어로 시작하기에는 진입 장벽이 조금 높은 편이다. 또한 문법 위주의 구성은 객체지향 프로그래밍의 개념과 활용을 학습하는 데 적절하지 못하다고 판단했다. 따라서 기초 프로그래밍을 학습한 독자들을 대상으로 제대로 된 객체지향 프로그래밍 기법과 자바 문법 요소들을 전달해서 두 마리 토끼를 한 번에 잡는 것으로 이 책의 콘셉트를 설정했다. 이를 위해서 이 책이 채택한 구성은 다음의 두 가지 특징을 가진다. 첫째, 카드게임의 작성 과정을 시나리오로 삼고 그 안에서 문법 요소들을 충실히 다루는 구성을 선택했다. 둘째, 독자들이 쉽고 재미있게 이 구성에 접근할 수 있도록 비주얼한 실습을 제공하는 기본 코드 틀을 책의 앞부분부터 도입해서 활용했다. 세상엔 공짜가 없듯이, 이 두 가지 구성 방식이 예제 프로그램을 다소 길고 복잡하게 만드는 요인이지만 동영상 강의를 제공해서 부드럽고 효율적으로 학습을 진행할 수 있도록 보완했다.
그간의 프로그래밍 교육 경험에 의하면 프로그래밍 언어는 예제를 중심으로 다루는 것이 가장 효과적이라고 생각한다. 따라서 100개가 넘는 예제 프로그램들을 제공해서 접근성을 높였고 직관적인 설명을 위해서 그림을 많이 활용했다. 나 역시 초보 시절에는 다른 사람이 작성한 프로그램을 분석해 보는 과정을 통해서 프로그래밍에 대한 틀이 잡히고 실력도 크게 향상됐던 것으로 기억한다. 책을 펼쳐 보면 빡빡하게 채워진 텍스트가 먼저 눈에 들어와서 첫인상은 좋지 않을 수도 있다. 하지만 이는 동영상 강의를 통해 혼자서도 학습할 수 있는 자습서 형식의 진행을 선택해서 설명이 많기 때문이고 비주얼한 실습 과정이 오히려 흥미로울 것으로 생각한다.

지은이 소개

음두헌

미국 오리건(Oregon) 주립대학교에서 석사와 박사 학위를 취득했다. 한국전자통신연구원을 거쳐 현재는 덕성여자대학교 소프트웨어 전공 교수로 재직 중이다. 저서로는 『C++를 이용한 객체지향 프로그래밍』(생능, 1995), 『카드게임으로 배우는 C++ 프로그래밍』(사이텍미디어, 2008), 『모던 C++ 프로그래밍 입문』(가메, 2016)이 있고, 역서로는 『데이터베이스 시스템 7/e』(홍릉과학, 2018)이 있다.

목차

목차
  • 1장. Hello 응용프로그램
  • 1.1 Hello 응용프로그램 실습
  • [콘솔 출력, 클래스와 객체, 패키지, 접근자, static 멤버]
  • 1.2 응용 과제
  • 1.2.1 응용 과제 1
  • [기본 데이터형, 참조형과 참조 변수, 콘솔 입력,
  • Scanner 클래스, String 클래스]
  • 1.2.2 응용 과제 2
  • [상수, 메소드 오버로딩, 정수 배열, 값 전달 호출과 참조 전달 호출]
  • 1.2.3 응용 과제 3
  • [필드와 변수의 유효 범위]
  • 1.2.4 응용 과제 4
  • [문자열 배열, main 메소드의 인자, 래퍼 클래스]
  • 1.3 보충 문법
  • 1.3.1 String 클래스
  • 1.3.2 2차원 배열
  • 1.3.3 열거형
  • 연습 문제

  • 2장. Pen 응용프로그램
  • 2.1 Pen 응용프로그램 실습
  • [MouseEvent 클래스, Graphics 클래스, 내부 클래스, Color 클래스]
  • 2.2 응용 과제
  • 2.2.1 응용 과제 1
  • [NullPointerException 예외]
  • 2.2.2 응용 과제 2
  • [static 필드의 효과]
  • 2.2.3 응용 과제 3
  • [Point 클래스, 가비지 컬렉션]
  • 2.2.4 응용 과제 4
  • [구조체]
  • 2.2.5 응용 과제 5
  • [개선된 for문]
  • 2.3 보충 문법
  • 2.3.1 Graphics 클래스
  • 연습 문제

  • 3장. Rectangle 응용프로그램
  • 3.1 Rectangle 응용프로그램 실습
  • [클래스와 객체, 생성자, 필드의 내부 접근과 외부 접근]
  • 3.2 응용 과제
  • 3.2.1 응용 과제 1
  • [기본 생성자, 생성자 오버로딩, 접근 메소드와 변경 메소드]
  • 3.2.2 응용 과제 2
  • [Line 클래스의 모델링]
  • 3.2.3 응용 과제 3
  • [static 멤버]
  • 3.2.4 응용 과제 4
  • [this() 함수, this 참조 변수, 생성자 오버로딩]
  • 3.2.5 응용 과제 5
  • [객체 배열]
  • 3.2.6 응용 과제 6
  • [객체 배열의 활용]
  • 3.2.7 응용 과제 7
  • [Rectangle 클래스, Graphics2D 클래스]
  • 3.3 보충 문법
  • 3.3.1 Math 클래스
  • 3.3.2 래퍼 클래스
  • 연습 문제
  • 도전 과제

  • 4장. Card 응용프로그램
  • 4.1 Card 응용프로그램 실습
  • [상속, super() 함수, super 키워드, 상속 관계에서의 생성자,
  • 객체의 형 변환, 메소드의 동적 결합, 다형성과 다형 변수]
  • 4.2 응용 과제
  • 4.2.1 응용 과제 1
  • [Object 클래스, 객체의 비교, 리플렉션, Class 클래스, instanceof 연산자]
  • 4.2.2 응용 과제 2
  • [protected 접근자, Random 클래스]
  • 4.2.3 응용 과제 3
  • [추상 클래스, 다형 변수, 다형성]
  • 4.2.4 응용 과제 4
  • [인터페이스, final 키워드의 활용, 어노테이션]
  • 4.2.5 응용 과제 5
  • [추상 클래스의 확장]
  • 4.2.6 응용 과제 6
  • [멀티 패키지, 접근자의 활용]
  • 4.3 보충 문법
  • 4.3.1 메소드 호출과 메소드의 동적 결합
  • 4.3.2 복사 생성자
  • 4.3.3 어노테이션
  • 연습 문제
  • 도전 과제
  • 5장. Pile 응용프로그램
  • 5.1 Pile 응용프로그램 실습
  • [포함 관계를 통한 재사용, 상속 관계를 통한 재사용]
  • 5.2 응용 과제
  • 5.2.1 응용 과제 1
  • [키 이벤트 처리]
  • 5.2.2 응용 과제 2
  • [awt 패키지, awt.event 패키지, 윈도우 이벤트 처리, Button 클래스, Label 클래스, 배치관리자]
  • 5.2.3 응용 과제 3
  • [다중 상속]
  • 5.2.4 응용 과제 4
  • [예외 처리]
  • 5.2.5 응용 과제 5
  • [파일 입출력(기본), 예외 처리, 배치관리자]
  • 5.2.6 응용 과제 6
  • [파일 입출력(고급), serialVersionUID 상수, 예외 던지기]
  • 5.2.7 응용 과제 7
  • [애플릿]
  • 5.3 보충 문법
  • 5.3.1 내부 클래스
  • 5.3.2 MouseMotionListener 인터페이스
  • 5.3.3 배치관리자
  • 5.3.4 익명 클래스
  • 5.3.5 람다식
  • 연습 문제
  • 도전 과제

  • 6장. Game 응용프로그램
  • 6.1 Game 응용프로그램 실습
  • [상속과 포함의 활용, 다형성의 활용]
  • 6.2 응용 과제
  • 6.2.1 응용 과제 1
  • [스윙 패키지, 복합 객체, JPanel 클래스, JButton 클래스]
  • 6.2.2 응용 과제 2
  • [JLabel 클래스]
  • 6.2.3 응용 과제 3
  • [JList 클래스, 제네릭 클래스, ListSelectionListener 인터페이스]
  • [JComboBox 클래스, 컬렉션 클래스, Stack 클래스]
  • 6.2.5 응용 과제 5
  • [이미지 처리, JTextField 클래스, JPasswordField 클래스]
  • 6.2.6 응용 과제 6
  • [이미지 레이블]
  • 6.2.7 응용 과제 7
  • [다중 스레드]
  • 6.2.8 응용 과제 8
  • [모듈]
  • 6.3 보충 문법
  • 6.3.1 이벤트 종류와 이벤트 소스
  • 6.3.2 제네릭 클래스와 제네릭 메소드의 정의
  • 6.3.3 컬렉션 프레임워크
  • 6.3.4 스레드의 활용
  • 6.3.5 싱글톤
  • 연습 문제
  • 도전 과제

  • 부록
  • A.1 객체지향 소프트웨어의 설계
  • A.1.1 현금 자동 출납기 시스템의 설계
  • A.1.2 카드게임의 설계
  • A.1.3 일반적인 설계 오류
  • A.2 Mac에서 실습 환경 구축

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안