상세정보

d

d

dd
dd

[열혈강의] 객체 중심 Java

안드로이드를 이용한 색다른 UI 실습

지은이 |   강요천
옮긴이 |   
발행일 |   2010-11-01
페이지 |   968가격 |   30,000원
ISBN |   978-89-6540-003-5
분야 |   프로그래밍 언어, 자바
dddddd

[열혈강의] 객체 중심 Java

안드로이드를 이용한 색다른 UI 실습

지은이 |   강요천
옮긴이 |   
발행일 |   2010-11-01
페이지 |   968
가격 |   30,000원
ISBN |   978-89-6540-003-5
분야 |   프로그래밍 언어, 자바
ddd
ddd
아이폰, 닷넷, 루비, 플렉스, 파이선 등 최근의 프로그래밍 언어를 배우기 위해 가장 필요한 것은 객체지향 프로그래밍에 대한 개념이라 할 수 있습니다. Java는 객체지향 개념과 함께 C 언어의 포인터 개념에 해당하는 레퍼런스라는 개념도 있습니다. 이러한 객체지향과 포인터에 대한 개념을 제대로 정립하기 위해서 언어를 떠나 왜 이런 개념들이 등장했는지부터 설명합니다. 또한, 안드로이드와 아이폰, 웹에서 공통으로 사용되는 이벤트 처리에 대한 개념을 통해서 새로운 프로그래밍에 적응할 수 있는 내공을 키워 드립니다.

영어 단어를 많이 안다고 해서 영어를 잘하는 것이 아니고 단지 한글을 안다고 해서 멋진 글을 쓸 수 없듯이 프로그래밍 문법을 안다고 해서 제대로 프로그램을 만들 수 있는 것은 아닙니다. 문법과 문법의 사이를 흐르는 멋진 개념들과 미래를 예상하는 프로그래머들의 현명함이 좋은 코드를 만들어 냅니다. 따라서 객체지향적으로 프로그래밍하려면 머릿속의 회로의 순서를 조정해야 합니다. 이 일은 단순하지도 않고, 문법을 배우는 것처럼 명확하지도 않습니다. 저자는 자신이 가진 객체지향에 대한 기준과 개념을 강의실에서 말하듯 풀어내어 독자들이 스스로 객체지향적으로 생각하는 능력을 키우도록 해줍니다.
Part 1 Java 프로그래밍의 기본
01장 About Java!
__1. Java 언어의 과거와 현재 그리고 미래
__2. Java 언어의 특징
__3. Java 언어를 공부하는 데 필요한 것들
__4. Java 프로그램의 실행 구조를 이해하기
__5. Java 언어의 문법적인 주의사항 및 환경 설정

02장 데이터를 담아두는 상자: 변수(Variables)
__1. 변수란 무엇인가?
__2. 변수는 왜 사용하는가?
__3. Java로 변수를 선언한다는 것
__4. 기본 자료형: byte, short, int, long
__5. 변수를 선언할까 말까?: 변수를 선언하는 판단 기준 가이드
__6. 형 변환(Type Conversion): 데이터를 다른 종류의 상자로
__7. 만들어 봅시다: 화면에서 숫자 입력받기

03장 연산자: 컴퓨터에게 작업을 시키는 기호
__1 산술연산: 더하기, 빼기, 곱하기, 나누기, 나머지
__2 자동증감 연산자: ++, --
__3 동등 비교(Equality) 및 관계(Relational) 연산자
__4 비트 연산자: |, &, ^
__5 논리 연산자: &&, ||
__6 기타 연산자: 삼항 연산자, 할당 연산자
__7 16진수와 8진수
__8 프로그램에서 쓰이는 특수문자

04장 제어문/루프: 상황에 따라 다르게 실행하자
__1 Java에서 제어문이란?
__2 모든 제어문의 기초 if: 만일 ~ 한다면
__3 if ~ else를 간단하게 쓰려는 시도 switch
__4 루프(Loop): 지정된 만큼 실행하라.
__5 do ~ while: 무조건 실행하고 조건을 따지는 방식
__6 주사위 게임 만들기

05장 변수와 제어문을 이용하는 프로그램 만들기
__1. 변수를 언제 써야 하는지 알고 있는가?
__2. 순환문의 활용 용도를 잘 알고 있는가?

06장 데이터를 일렬로 줄 세우는 배열
__1. 배열이란? 이름없는 변수들의 탑
__2. 배열의 문법적인 선언
__3. 배열을 이용하는 프로그램을 만들어봅시다.
__4. 배열에 대한 메모리 공간에 대한 이해
__5. 배열은 비연속적인 정보들을 하나로 모으고 싶을 때 씁니다.
__6. 배열의 남은 내용

Part 2 객체지향 프로그래밍의 등장
07장 객체지향이라는 패러다임
__1. 1에서 100까지의 합을 구하는 프로그램을 만든다면?
__2. 함수의 출현: 로직이나 기능을 하나의 { }으로 묶어서 한 덩어리로 만드는 방식
__3. 메소드: Java에서 어떤 로직이나 기능을 만들어 내는 방법
__4. 메소드의 구성 요소를 정리해봅시다.
__5. 메소드를 이용해 봅시다: 카우프 지수 구하기
__6. 프로그램이 점점 커지면서 발생하는 상황
__7. 다른 메소드의 실행 결과를 항상 참고할 수 있다면?
__8. 데이터와 로직을 결합했더니... 여러 명이 사용하면 문제가 됩니다.
__9. 클래스와 객체의 개념: 데이터와 로직을 하나의 덩어리로 만들고, 각자 데이터를 쓸 수 있게 하자!
__10. 저금통을 클래스로 만들고 객체로 만들기
__11. 객체 자료형: 객체의 리모컨을 담는 변수
__12. 객체와 데이터의 관계
__13. 나만의 클래스, 객체를 만드는 순서
__14. 복불복 기계 만들기
__15. 객체의 데이터란?
__16. 객체: 데이터들의 묶음
__17. 데이터가 주인공인 클래스와 생성자(Constructor)

08장 객체지향 사고방식의 적용
__1. 어째서 나는 클래스를 만들지 못하는가?
__2. 객체와 객체 사이의 의사소통
__3. 인사관리 시스템을 객체지향으로 구성해보기

09장 접근 제한, 패키지(package), static
__1 패키지 폴더 구조
__2 자신만의 패키지를 설계하는 방법
__3 접근 제한이라는 것이 왜 필요한가?
__4 인스턴스 변수와 getter, setter
__5 static이라는 특별한 의미

Part 3 객체지향 프로그래밍의 기법
10장 상속을 통해서 코드를 절약한다.
__1 기본적인 객체지향 프로그래밍 다음에 배워야 하는 내용
__2 상속을 이용하면 빠르게 개발할 수 있을까?
__3 상속을 이용하면 if ~ else를 없앨 수도 있습니다.
__4 추상 클래스(Abstract Class): 객체가 아니라 타입으로만 존재하고 추상 메소드를 가지는 존재
__5 상속 활용 방법: 추상 클래스와 추상 메소드를 어떻게 쓰는가?
__6 상속을 쓸까 말까? 상속을 사용하는 체크포인트

11장 인터페이스 꼭 알아야 하나?
__1. 인터페이스란 무엇인가?
__2. 인터페이스는 실생활에서 많이 사용됩니다.
__3. 문법으로 알아보는 인터페이스
__4. 인터페이스 직접 만들기: '당신이 원하는 기능'을 정의합니다.
__5. 인터페이스는 하나의 클래스에 여러 개를 붙여줄 수 있습니다.
__6. 다형성이라는 것
__7. 인터페이스는 전혀 다른 객체를 하나의 타입으로 인식할 수 있게 합니다.
__8. 인터페이스는 일종의 접근 제한 역할도 할 수 있습니다.
__9. 인터페이스는 다중 상속 문법도 됩니다.
__10. 인터페이스를 이용하는 Advanced 코딩 가이드
__11. 의존성 주입(Dependency Injection)
__12. 인터페이스 vs 추상 클래스

Part 4 컬렉션과 필수 API
12장 편리한 문자열과 API
__1. 고수준 언어와 저수준 언어
__2. 문자열은 API에서 제공하는 클래스입니다.
__3. 문자열의 equals( )와 '=='는 다르다.
__4. 문자열은 변경 불가능한 Immutable 객체
__5. 문자열과 변환
__6. 문자열과 배열

13장 API에서 알아두어야 할 클래스들
__1. StringBuffer, StringBuilder: 문자열은 너무 느립니다.
__2. Date, Calendar, long: 시간을 데이터로 처리하기 위한 장치
__3. java.util.Random: 랜덤한 데이터가 필요합니까?
__4. java.util.Scanner: Scanner의 기능들도 알면 좋겠군요.
__5. 정확한 소수에는 BigDecimal
__6. Wrapper 클래스: 기본 자료형을 객체 자료형으로
__7. 잠시 후에 실행하게 하는 Timer/TimerTask
__8. 데이터를 마음대로 보여주는 Formatter

14장 예외 처리: 프로그램의 보험
__1. 예외(Exception)는 우리가 바라는 상황이 아닙니다.
__2. 예외 상황 때문에 프로그램이 멈추면 안 됩니다.
__3. 가장 흔하게 보는 예외들
__4. Java에서는 예외도 객체로 처리합니다.
__5. try ~ catch: 예외를 직접 처리
__6. Exception은 상속 구조
__7. 끝끝내 실행하는 finally가 있습니다.
__8. throws로 발생한 예외를 던져버린다: 책임지기 싫으면 남에게 책임을 미룹니다.
__9. 예외를 잡느냐, 던지느냐? 그것이 문제입니다.
__10. 사용자 정의 예외(User Defined Exception): 예외를 만들어야 할 때

15장 Java의 Collections (자료구조)
__1. 컬렉션, 자료구조: 데이터가 연결된 구조
__2. 순서대로 마구 중복해서 넣는 List 계열
__3. 도서관의 사물함 같은 Map 계열
__4. 순서 없는 주머니 Set 계열
__5. 트리(Tree): 정리를 잘하는 Tree로 시작하는 클래스
__6. 스택(Stack): 최신 데이터를 가장 빠르게
__7. 어떤 자료구조든 순환해서 볼 수 있는 Iterator/Enumeration
__8. 자료구조의 정렬: Comparable 인터페이스, Comparator 인터페이스

Part 5 입출력 프로그래밍과 네트워킹
16장 java.io 패키지: 데이터 읽고 쓰기
__1. I/O라는게 뭔가요? 데이터의 입출력의 원리
__2. java.io 패키지의 InputStream, OutputStream
__3. InputStream에서 반드시 기억해야 하는 메소드 read( ): 한 바이트의 데이터를 읽는다.
__4. OutputStream: 바이트의 데이터를 기록할 수 있다.
__5. 입출력 프로그래밍에서 사용한 파이프는 반드시 close( )해야만 합니다.
__6. 파일 복사 프로그램의 원리와 실습
__7. 속도가 빠른 파일 복사 프로그램 만들기
__8. InputStream을 FileInputStream 대신에 인터넷에 연결하면?
__9. 문자열 읽고 쓰기
__10. 객체를 읽거나 쓸 수 있는 ObjectInputStream, ObjectOutputStream
__11. InputStream을 Reader로, OutputStream을 Writer로
__12. 마음대로 읽고 쓰는 RandomAccessFile 객체
__13. 파일과 File 객체
__14. 입출력 프로그래밍을 이용한 이미지 파일 생성
__15. 엑셀 파일을 만들고 읽어 보는 Java 프로그래밍

17장 데이터를 주고받는 네트워킹
__1. 네트워크를 통해 메시지를 주고받는다는 건...
__2. Socket 클래스
__3. DataOutputStream
__4. 파일 데이터를 클라이언트에게

18장 Web을 위한 스레드와 네트워킹
__1. ServerSocket과 브라우저
__2. 무조건 동시라는 단어가 나오면 스레드를 생각하면 됩니다.

Part 6 이벤트 처리와 안드로이드 프로그래밍
19장 안드로이드 프로그래밍 준비: 마크업 언어와 이벤트
__1. 화면을 구성하는 프로그래밍의 발전
__2. 프로그래밍 방식 vs. 마크업 방식
__3. 로직의 처리와 이벤트
__4. 이벤트의 메시지 전달 방식에 대한 이해
__5. 아밴트 처리의 전체 구조
__6. Java에서의 Event Handler는 인터페이스를 구현한 객체

20장 안드로이드 실습 환경 갖추기
__1. 안드로이드 실습을 위해서 준비해야 하는 것들
__2. 이클립스에 안드로이드 플러그인 설치하기
__3. 이클립스에서 안드로이드 프로젝트 생성하기

21장 안드로이드 프로그래밍의 필수 지식
__1. 안드로이드의 내부 구조
__2. 안드로이드의 주요 용어
__3. Android App(Application) 구성 분석
__4. 안드로이드의 이벤트 처리 방식
__5. 익명 클래스와 Event Handler

22장 안드로이드 프로그래밍의 디버깅과 Intent
__1. LogCat과 DDMS
__2. 안드로이드의 Intent
__3. Intent를 이용한 Activity 이동하기
__4. Activity 간에 데이터 전달하기

부록 JDK API 문서 활용
강요천

1999년부터 Java 관련 개발, 컨설팅, 강의, 유지보수 업무를 수행해왔다. 벤처에서부터 시작하여 프리랜서, 컨설턴트, 대기업에서 솔루션 개발 업무와 R&D, 웹 사이트 설계 및 개발 업무, 시스템 운영 업무, PL/PM을 거쳐 왔다. 프로그래밍 관련 책 모으기를 좋아하고, 전생에 공부를 안 해서 현세에 공부하는 직업인 개발자가 되었다고 믿고 있다. 2008년 이후 현재까지는 주로 Java EE 프레임워크/Java SE 관련 강의를 하고 있다.

주요 경력
BIT 교육센터, 한국 오라클 교육센터, 삼성 SDS 멀티 캠퍼스, 삼성생명, 한국은행, LG전자, 교보생명, 하나은행 등에서 J2EE 관련 프로젝트 수행 및 컨설팅, 강의를 진행해왔다.

아이폰, 닷넷, 루비, 플렉스, 파이선 등 최근의 프로그래밍 언어를 배우기 위해 가장 필요한 것은 객체지향 프로그래밍에 대한 개념이라 할 수 있습니다. Java는 객체지향 개념과 함께 C 언어의 포인터 개념에 해당하는 레퍼런스라는 개념도 있습니다. 이러한 객체지향과 포인터에 대한 개념을 제대로 정립하기 위해서 언어를 떠나 왜 이런 개념들이 등장했는지부터 설명합니다. 또한, 안드로이드와 아이폰, 웹에서 공통으로 사용되는 이벤트 처리에 대한 개념을 통해서 새로운 프로그래밍에 적응할 수 있는 내공을 키워 드립니다.

영어 단어를 많이 안다고 해서 영어를 잘하는 것이 아니고 단지 한글을 안다고 해서 멋진 글을 쓸 수 없듯이 프로그래밍 문법을 안다고 해서 제대로 프로그램을 만들 수 있는 것은 아닙니다. 문법과 문법의 사이를 흐르는 멋진 개념들과 미래를 예상하는 프로그래머들의 현명함이 좋은 코드를 만들어 냅니다. 따라서 객체지향적으로 프로그래밍하려면 머릿속의 회로의 순서를 조정해야 합니다. 이 일은 단순하지도 않고, 문법을 배우는 것처럼 명확하지도 않습니다. 저자는 자신이 가진 객체지향에 대한 기준과 개념을 강의실에서 말하듯 풀어내어 독자들이 스스로 객체지향적으로 생각하는 능력을 키우도록 해줍니다.