책 소개
자바, 왜 진정한 강자인가
많은 기업이나 개발자들은 응용프로그램을 개발할 때 어떤 언어를 사용할지 고심한다.
C, C++, C#, 자바? 어떤 언어가 좋을까? 언어마다 그 나름대로의 장점과 단점이 있다.
C 언어로 작성하면 실행 속도가 빠르긴 한데, 코드 길이나 파일 개수가 많아지면 프로젝트의 관리가 어렵고, 다루기 힘든 포인터의 사용이 부담스럽고, 동적 메모리를 할당받고 되돌려 주는 메모리 관리 등을 생각하면, C 언어의 사용을 주저하게 된다.
C++의 경우 객체 지향 구조로 코드 관리가 유용하지만 여전히 포인터의 사용과 동적 메모리 관리가 두렵다. 또한 C/C++는 실행 파일의 호환성이 없어서, 운영체제나 CPU마다 별도로 컴파일하여 실행 파일을 배포해야 한다. 특히 GUI 응용프로그램을 작성하게 되면 더 심각해진다. GUI 라이브러리는 운영체제나 컴파일러마다 완전히 다르기 때문에 실행되는 시스템마다 GUI 부분을 완전히 다시 작성해야 하는 부담이 매우 크다.
C#의 경우 닷넷이 설치된 윈도우에서만 실행되므로 한계가 명확하다.
자바의 경우는 어떨까? 자바에는 포인터가 없다. 메모리를 할당받으면 되돌려줄 필요도 없다. 자바 플랫폼이 알아서 척척 메모리를 수거해 간다. 객체 지향 구조로 인해 소스 코드 관리가 쉽고 소프트웨어의 생산성이 높다. 무엇보다도 CPU나 운영체제에 대한 의존성이 없어서, 한 번 작성한 자바 프로그램은 어떤 컴퓨터, 어떤 운영체제에서도 실행된다.
GUI 응용프로그램 개발 시 플랫폼 독립성은 더욱 큰 의미를 가진다. 자바의 스윙 라이브러리로 작성된 GUI 자바 프로그램은 어떤 컴퓨터, 어떤 운영체제에서도 동일하게 작동한다. C/C++ 언어와 GTK, X-Window, MFC, OWL, 윈도우즈 API 등 다양한 GUI 라이브러리로 GUI 프로그램을 개발해본 경험에 의하면, 자바의 스윙은 컴포넌트가 다양하고 정말로 배우기 쉬운 GUI 라이브러리이다. 그래서 자바가 진정한 강자이다.
이 책의 구성과 특징
이 책은 자바의 입문자가 한 학기에 자바의 기초를 확립할 수 있도록 13장으로 구성하였다. 자바 언어에 대한 쉬운 설명과 의미 있는 예제를 도입하여 이론이 프로그래밍으로 이어지게 하고, 이해도 높은 삽화와 그림으로 본문에 쉽게 몰입할 수 있도록 하였다. 그러므로 이 책은 소프트웨어 전공 학생뿐 아니라, 공학의 비전공 학생들이나 짧은 시간에 자바 프로그래밍의 핵심을 쉽게 이해하고 프로그래밍 기초를 확립하고자 하는 다양한 부류의 학습자들에게 적합하다. 예제 소스, Open Challenge, 공개된 실습 문제의 정답 소스는 생능출판사 홈페이지(www.booksr.co.kr)에서 제공한다.
1. 에센셜 콘텐츠
오랜 개발 및 강의 경험을 토대로, 자바 프로그래밍의 기초를 확립하는데 꼭 필요한 내용들을 한 학기에 배울 수 있도록 구성하였다.
2. 편안하고 섬세한 디자인
책을 읽는 재미를 더해주는 삽화, 어려운 내용을 쉽게 풀어내는 그림, 본문을 편안히 읽도록 도와주는 키워드 하이라이팅, 소스에 대한 가독성을 높이는 컬러링으로 쉽게 학습할 수 있다.
3. 이론과 코딩이 결합되는 단계적 학습
이론이 자연스럽게 프로그래밍으로 이어지는 예제와 핵심을 점검할 수 있는 CHECK TIME 문제로 이론과 코딩을 한 번에 학습할 수 있으며, 각 장의 요약에는 빈칸을 채우는 재미를 더하였다. 연습문제는 이론과 실습으로 구분하고 실습 문제는 난이도를 하, 중, 상으로 설계하여 프로그래밍을 단계별로 학습할 수 있다. 또한 Open Challenge 문제를 통해 스스로 코딩에 도전해 볼 수 있다.
이 책의 내용
1장에서는 자바 언어와 플랫폼에 대해 전반적으로 이해하고, 이클립스를 이용한 자바 프로그램 개발을 다룬다.
2장에서는 자바 프로그램의 기본 구조를 이해하고, 화면 출력 및 키 입력 방법을 습득한다.
3장에서는 자바의 반복문을 이해하고, 자바의 독특한 배열의 구조를 알고 활용한다. 자바의 기초적인 예외 처리를 다룬다.
4장에서는 자바 클래스 작성, 객체와 객체 배열 생성, 객체 소멸과 가비지 컬렉션에 대해 이해한다. static 멤버의 사용과 활용, final 키워드의 용도를 알아본다.
5장에서는 상속의 개념을 이해하고 서브 클래스를 작성한다. 오버라이딩과 동적 바인딩을 알아보고 추상 클래스와 인터페이스를 다룬다.
6장에서는 자바 패키지에 대한 개념을 이해하고 사용자 패키지를 만든다. 자바의 다양한 패키지를 다룬다.
7장에서는 컬렉션과 제네릭의 개념을 이해하고, 컬렉션을 활용한 프로그램을 작성한다.
8장에서는 자바 스윙을 이용한 GUI 프로그래밍의 기초를 이해하고 스윙 프로그램을 작성한다.
9장에서는 자바의 이벤트 기반 프로그래밍을 이해하고, 이벤트 리스너를 작성한다. 스윙으로 키보드와 마우스를 다룬다.
10장에서는 다양한 스윙 컴포넌트를 활용하여 GUI 프로그램을 작성한다.
11장에서는 선, 원, 이미지 그리기 등 스윙 그래픽을 이해하고 그래픽을 활용한 스윙 프로그램을 작성한다.
12장에서는 자바 스레드, 멀티스레드, 스레드 동기화에 대한 기초 개념을 이해하고, 스레드를 작성한다.
13장에서는 자바의 표준 입출력 스트림의 개념을 이해하고, 텍스트, 바이너리 파일 입출력 프로그램을 작성한다.
작가 소개
저 : 황기태
서울대학교 컴퓨터공학과 학사, 서울대학교 컴퓨터공학과 석사, 서울대학교 컴퓨터공학과 박사를 졸업하였다. California University in Irvine의 방문교수로 있었다. 현재는 한성대학교 컴퓨터공학과 교수로 재직 중이다.
목 차
1.1 컴퓨터와 프로그래밍
1.2 자바의 출현과 WORA
1.3 자바 개발 도구
1.4 자바 프로그램 개발 과정
1.5 이클립스를 이용한 자바 프로그램 개발
1.6 자바 응용프로그램의 종류
1.7 자바의 특징
요약
Open Challenge
연습문제
chapter 02 자바 기본 프로그래밍
2.1 자바 프로그램의 구조
2.2 식별자
2.3 자바의 데이터 타입
2.4 자바의 키 입력
2.5 연산자
2.6 조건문
요약
Open Challenge
연습문제
chapter 03 반복문과 배열 그리고 예외 처리
3.1 반복문
3.2 continue 문과 break 문
3.3 자바의 배열
3.4 다차원 배열
3.5 배열 리턴
3.6 자바의 예외 처리
요약
Open Challenge
연습문제
chapter 04 클래스와 객체
4.1 객체 지향과 자바
4.2 자바 클래스 만들기
4.3 생성자
4.4 객체 배열
4.5 메소드 활용과 객체 치환
4.6 객체의 소멸과 가비지 컬렉션
4.7 접근 지정자
4.8 static 멤버
4.9 final
요약
Open Challenge
연습문제
chapter 05 상속
5.1 상속의 개념
5.2 클래스 상속과 객체
5.3 protected 접근 지정
5.4 상속과 생성자
5.5 업캐스팅과 instanceof 연산자
5.6 메소드 오버라이딩
5.7 추상 클래스
5.8 인터페이스
요약
Open Challenge
연습문제
chapter 06 패키지 개념과 자바 패키지 활용
6.1 패키지
6.2 패키지 만들기
6.3 자바 JDK에서 제공하는 패키지
6.4 Object 클래스
6.5 Wrapper 클래스
6.6 String과 StringBuffer 클래스
6.7 StringTokenizer 클래스
6.8 Math 클래스
요약
Open Challenge
연습문제
chapter 07 컬렉션과 제네릭
7.1 컬렉션과 제네릭 개념
7.2 제네릭 컬렉션 활용
7.3 제네릭 만들기
요약
Open Challenge
연습문제
chapter 08 자바 GUI 스윙 기초
8.1 자바의 GUI
8.2 자바 GUI 패키지
8.3 스윙 GUI 프로그램 만들기
8.4 컨테이너(Container)와 배치(Layout)
8.5 FlowLayout 배치관리자
8.6 BorderLayout 배치관리자
8.7 GridLayout 배치관리자
8.8 배치관리자 없는 컨테이너
요약
Open Challenge
연습문제
chapter 09 자바의 이벤트 처리
9.1 이벤트 기반 GUI 프로그래밍
9.2 이벤트 객체
9.3 사용자 이벤트 리스너 작성
9.4 어댑터(Adapter) 클래스
9.5 Key 이벤트와 KeyListener
9.6 Mouse 이벤트와 MouseListener, MouseMotionListener
요약
Open Challenge
연습문제
chapter 10 스윙 컴포넌트 활용
10.1 스윙 컴포넌트 소개
10.2 JLabel로 문자열과 이미지 출력
10.3 JButton으로 버튼 만들기
10.4 JCheckBox로 체크박스 만들기
10.5 JRadioButton으로 라디오버튼 만들기
10.6 JTextField로 한 줄 입력 창 만들기
10.7 JTextArea로 여러 줄의 입력 창 만들기
10.8 JList로 리스트 만들기
10.9 JComboBox로 콤보박스 만들기
10.10 메뉴 만들기
10.11 팝업 다이얼로그
요약
Open Challenge
연습문제
chapter 11 그래픽
11.1 스윙 컴포넌트 그리기
11.2 Graphics
11.3 도형 그리기와 칠하기
11.4 이미지 그리기
11.5 repaint()와 그래픽 응용
요약
Open Challenge
연습문제
chapter 12 자바 스레드 기초
12.1 멀티태스킹
12.2 자바 스레드 만들기
12.3 스레드 종료
12.4 스레드 동기화
요약
Open Challenge
연습문제
chapter 13 입출력 스트림과 파일 입출력
13.1 자바의 입출력 스트림
13.2 문자 스트림과 텍스트 파일 입출력
13.3 바이트 스트림과 바이너리 파일 입출력
13.4 File 클래스
13.5 파일 복사 응용프로그램 작성
요약
Open Challenge
연습문제
CHECK TIME 정답
- 단순 변심인 경우 : 상품 수령 후 7일 이내 신청
- 상품 불량/오배송인 경우 : 상품 수령 후 3개월 이내, 혹은 그 사실을 알게 된 이후 30일 이내 반품 신청 가능
반품사유 | 반품 배송비 부담자 |
---|---|
단순변심 | 고객 부담이며, 최초 배송비를 포함해 왕복 배송비가 발생합니다. 또한, 도서/산간지역이거나 설치 상품을 반품하는 경우에는 배송비가 추가될 수 있습니다. |
고객 부담이 아닙니다. |
진행 상태 | 결제완료 | 상품준비중 | 배송지시/배송중/배송완료 |
---|---|---|---|
어떤 상태 | 주문 내역 확인 전 | 상품 발송 준비 중 | 상품이 택배사로 이미 발송 됨 |
환불 | 즉시환불 | 구매취소 의사전달 → 발송중지 → 환불 | 반품회수 → 반품상품 확인 → 환불 |
- 결제완료 또는 배송상품은 1:1 문의에 취소신청해 주셔야 합니다.
- 특정 상품의 경우 취소 수수료가 부과될 수 있습니다.
결제수단 | 환불시점 | 환불방법 |
---|---|---|
신용카드 | 취소완료 후, 3~5일 내 카드사 승인취소(영업일 기준) | 신용카드 승인취소 |
계좌이체 |
실시간 계좌이체 또는 무통장입금 취소완료 후, 입력하신 환불계좌로 1~2일 내 환불금액 입금(영업일 기준) |
계좌입금 |
휴대폰 결제 |
당일 구매내역 취소시 취소 완료 후, 6시간 이내 승인취소 전월 구매내역 취소시 취소 완료 후, 1~2일 내 환불계좌로 입금(영업일 기준) |
당일취소 : 휴대폰 결제 승인취소 익월취소 : 계좌입금 |
포인트 | 취소 완료 후, 당일 포인트 적립 | 환불 포인트 적립 |
- 단순변심으로 인한 반품 시, 배송 완료 후 7일이 지나면 취소/반품 신청이 접수되지 않습니다.
- 주문/제작 상품의 경우, 상품의 제작이 이미 진행된 경우에는 취소가 불가합니다.
- 구성품을 분실하였거나 취급 부주의로 인한 파손/고장/오염된 경우에는 취소/반품이 제한됩니다.
- 제조사의 사정 (신모델 출시 등) 및 부품 가격변동 등에 의해 가격이 변동될 수 있으며, 이로 인한 반품 및 가격보상은 불가합니다.
- 뷰티 상품 이용 시 트러블(알러지, 붉은 반점, 가려움, 따가움)이 발생하는 경우 진료 확인서 및 소견서 등을 증빙하면 환불이 가능하지만 이 경우, 제반 비용은 고객님께서 부담하셔야 합니다.
- 각 상품별로 아래와 같은 사유로 취소/반품이 제한 될 수 있습니다.
상품군 | 취소/반품 불가사유 |
---|---|
의류/잡화/수입명품 | 상품의 택(TAG) 제거/라벨 및 상품 훼손으로 상품의 가치가 현저히 감소된 경우 |
계절상품/식품/화장품 | 고객님의 사용, 시간경과, 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우 |
가전/설치상품 | 전자제품 특성 상, 정품 스티커가 제거되었거나 설치 또는 사용 이후에 단순변심인 경우, 액정화면이 부착된 상품의 전원을 켠 경우 (상품불량으로 인한 교환/반품은 AS센터의 불량 판정을 받아야 합니다.) |
자동차용품 | 상품을 개봉하여 장착한 이후 단순변심의 경우 |
CD/DVD/GAME/BOOK등 | 복제가 가능한 상품의 포장 등을 훼손한 경우 |
상품의 시리얼 넘버 유출로 내장된 소프트웨어의 가치가 감소한 경우 | |
노트북, 테스크탑 PC 등 | 홀로그램 등을 분리, 분실, 훼손하여 상품의 가치가 현저히 감소하여 재판매가 불가할 경우 |