로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
고객님 안녕하세요!
강컴 회원만의 특별한
서비스를 경험하세요!
로그인  |  회원가입
추천 블로거
heatgone
...
비상구
초보분들께 도움되기 전에 내가 먼저 도움받...
자바지기
서평보기
Programming in Objective-C
Stephen G. Kochan | SAMS | 원서 | --
종합평점
도서수준
Objective-C 입문서 2007-08-16 오후 3:25:05 
평점
도서수준
조회수 (1577)
공감 (0)
임은천 님의 블로그
이전부터 MAC 프로그래밍을 하려면 어디서부터 시작해야할까? 하는 고민을 가지고 있었던 나에게 어디선가 Objective-C 부터 시작하면 된다는 이야기를 주워들은 적이 있다. 그래서 선택하게 된 책이 바로 이 책이다. 사실 책이라는 건 어떤 내용을 담고 있을 지 보기 전까지는 모르는 거라서 보물을 탐사 하듯이 조심스레 책장을 넘겼다.
 
이 책의 전반적인 느낌은 매우 쉽다는 것이고, 특히나 초보자를 대상으로 쓰였기 때문에, 프로그래밍 중급자 이상의 분들은 따분함을 느낄 지도 모르겠다. 하지만, 기초를 모르고서 응용을 한다는 것은 말이 안된다.
 
화려한 GUI 프로그래밍이나 언어의 Core에 해당하는 내용이 나오는 것은 아니지만, Objective-C에서 추구하는 객체 지향의 개념과 유연함을 느끼기엔 충분하다. 다만, 이 책에서 좀 아쉬운 점이라면, 프로그래밍에 이제 입문하는 사람들을 위해서 꽤나 많은 지면을 할애해서 응용을 원하는 분들에겐 큰 아쉬움을 남긴다는 점이다. 차후에 다른 독자가 읽을 때, 이 부분은 스킵해도 되겠다 하는 것을 내용 요약을 통해서 정리해 보겠다. 사실 이 내용 요약은 1장에 있는데, 영어로 쓰여 있다. 그러니 그냥 본 독자가 생각하는 요약을 적겠다.
 
2장은 Programming in Objective-C라는 제목으로 이 책의 제목과 같다(?). 여기에서는 가장 기초에 해당하는 컴파일 실행을 다룬다. 프로그래밍을 조금 해보신 분들이라면 간단히 읽어 보고 넘어가셔도 될 것이다. Project Builder를 쓰는 것을 한 번 해보겠다 하시는 분들은 MAC을 키셔서 한 번 해보시면 되겠다.
 
3장은 Classes, Objects, and Methods 라는 제목이다. 그냥 제목만 봐도 이 부분의 내용이 뭔지 감이 잡힐 것이다. 기존의 용어와 조금 다른 부분이 있다면, receiver와 message라는 개념을 객체와 메서드에 부여한다는 점이다. 게다가 하위에 c를 담고 있기 때문에 interface section, implementation section, program section으로 나눠서 객체 지향 구현의 구조를 바라볼 수 있다. 기초적인 내용이라서 간단히 읽어보면 되겠다.
 
4장은 Data Types and Expressions이다. 조금 다른 타입으로는 id 타입이 있다. 모든 것을 받을 수 있다는 객체 지향의 Object 형태의 참조가 담길 수 있다. 수학적 수식이나 연산자는 익숙할 것이다.
 
5장은 Program Looping이라는 제목을 가지고 있다. for, while, do while 등이 나온다. 본 독자는 꼼꼼히 읽어 봤지만, 별 다른 내용은 없으니 시간 낭비 안하셔도 된다.
 
6장은 Making Decisions이다. 제목은 거창하지만, if, switch case, 3항 연산자 등이 나온다. 역시 어려운 게 없다.
 
7장은 More on Classes라는 제목을 가지고 있다. 여러 매개 변수 넘기기, 지역 변수, static, self, 할당과 반환 등 기초적인 내용 등을 다룬다.
 
8장은 Inheritance이다. 기존 객체 지향 언어의 상속과 같으니 별 어려움이 없다. 다만, 하위에 c를 사용하다 보니 할당한 후에 해제를 해줘야 한다. 물론 차후에 autopool이라는 것이 나올 때까지이다. 하지만, 그게 나와도 기본적으로 알아야 한다.
 
9장은 Polymorphism, Dynamic Typing, and Dynamic Binding 이라는 제목으로, 이에 대한 주제를 아주 잘 설명하고 있다. id 타입에 대한 동적 바인딩을 위해서 isa라는 필드를 사용한다고 하는데, 더 뒤에서 나온다. 여기에서는 정적/동적 타이핑/바인딩에 대한 개념을 소개 한다. 메시지를 보내는 것에 의해서 동적인 검사를 하려면 당연히 185p에 있는 메타 메시지가 필요하다. 어째 어디서 많이 보던 것 아닌가? 어디에서 봤는지 잘 생각해 보자. 그리고 아직 본 적이 없는 것 같으면, Java, Python, Ruby, C# 등에 다 있으므로 참고해 보자.
 
10장은 More on Variables and Data Types에서는 데이터 타입에 대해서 좀 더 자세히 다루지만 기존에 c언어를 다루시던 분들은 식상하므로 그냥 넘어가셔도 무관하다.
 
11장은 Categories, Posing, and Protocols이다. 이 장은 설계자, 구현자의 관점에서는 매우 중요한 장이므로 별표 5개를 해야 한다. delegate를 구현하는 것과 직접적인 관련이 있다. 내용을 요약하자면, Protocols는 자바의 interface와 같은 역할이고, Posing은 delegating을 하며, Categories는 기존 코드에 원하는 코드만 포함되도록 하는 유연한 확장성을 지원하는 방법이다. 이것은 Interface Injection이라는 용어로 요약하면 되겠다. 본 독자는 Categories 부분이 매우 유용하다고 생각하는데, 왜 java나 C#에서 이런 게 구현이 안되었나 싶다.
 
12장은 The Preprocessor이다. 물론 한 번 보는 것도 좋지만, 본 독자는 Preprocessor를 매우 싫어 하므로 읽어만 봤다. 여기에 있는 건 참고만 했으면 하는 바램이다. 그리고 안 썼으면 한다.
 
13장은 Underlying C Language Features라는 제목이다. 말 그대로 여기에선 C에 대해서 가르쳐 준다. 배열, 함수, 구조체, 포인터, 공용체 등이 나온다. 보면 하품이 나올 것이다.
 
지금까지 무지 지루한 여정이었다. 이제 14장부터는 이전에 배웠던 것을 조금씩 써본다.
 
14장은 Introduction to the Foundation Framework라는 제목을 가지고 있다. 여기에서 하려는 이야기는 기존에 개발된 것이 무지 많으므로, 굳이 구현하려고 하지 말고 찾아 보고 없으면 구현해라는 의도를 가지고 있다. 사실 어디를 참고하고, 어떻게 써라 하는 간단한 내용이다.
 
15장은 Numbers, Strings, and Collections이다. 가장 기본적인 숫자, 문자, Collection류를 다루는 것을 보여준다. Immutable String은 @"문자열" 처럼 만든다. 이것은 NSString의 형태이고, NSMutableString 클래스를 통해서 Mutable String을 만든다. 어쨌든 이 장에서 하려는 이야기는 Immutable 문자열은 우리가 보기엔 같은 곳에서 시작했으니 같은 곳의 참조를 가지고 있으므로 수정할 수 있고, Mutable이라고 생각하겠지만, 메시지 전달 후에 얻어온 문자열은 다른 주소를 가리킨다는 의미를 가지고 있다. 즉, 본래의 참조를 변경할 수 없다는 뜻을 가진다. 이런 구현은 메시지 전달 후 반환 시에 새로운 객체를 생성해서 반환하거나 복제를 하는 법이 있으나 대부분의 복제는 새로운 객체를 생성하는 형태가 대부분이므로(메모리 복사를 하는 법도 있겠지만) 새로운 객체를 생성하는 것으로만 이해를 하면 되겠다. Collection류로는 Array, Dictionary, Set 등이 다뤄진다. 각각 기본 배열, 연관 배열, 중복 요소 없는 배열로 이해해도 되겠다.
 
16장은 Working with Files라는 제목으로 말 그대로 File을 다루는 법을 다룬다. API 사용이므로 그냥 따라해 보면 된다. 여기에서 buffer로 NSData라는 것을 사용한다는 점을 기억해 두자.
 
17장은 Memory Management라는 제목으로 지금까지 코딩에서 할당 해제의 반복이 귀찮았던 분들에게 희소식을 준다. Autorelease Pool에 대한 소개가 나온다. Autorelease Pool의 동작 설명을 위해서 참조 카운팅도 나온다. 결국 Pool은 참조 카운트가 0일 때 참조를 삭제한다는 단순한 원리를 따르지만.. 어쨌든 우리를 편리하게 만들어 준다. 즉, 이 이야기는 만약 autorelease pool을 사용할 수 있는 객체를 생성하려면 이 카운트를 알아서 잘 조절해야 한다는 뜻으로 이해를 했는데, 저자가 이런 의도로 썼는지는 잘 모르겠다.
 
18장은 Copying Objects에 대한 내용이다. 말 그대로 복사를 하는 과정이므로 이전에 많이 봤던 Shallow, Deep Copy 등의 내용이 나온다. 이런 내용은 너무 진부하니깐 그냥 넘어가자고 마음 먹었다고 하더라도 424p의 내용은 보고 가도록 하자. 우리는 메모리 관리를 고려 해야 한다.
 
19장은 Archiving이라는 제목이 나온다. 각 언어별로 객체를 저장하는 방식을 지원하는데 Objective-C도 마찬 가지이다. 기본이 XML이라는 기쁜 소식이 19장 처음 부분에 보일 것이다. 어려운 내용이 없으므로 그냥 읽어보고 넘어가면 되겠다.
 
사실 코드 치는 것은 나중에 X Code 짤 때 해봐도 되므로 여기에서는 개념만 익혀두길 바란다.
 
부록 A는 여기에서 나온 용어를 정의 해 준다. 그러니 한 번쯤은 읽어봐도 되겠다.
부록 B는 문법에 대해서 다루는데, 본 독자가 읽어 본 결과 지루하고 책에서 봤던 내용과 중복 되므로 안 봐도 된다는 생각이다.
부록 C는 Foundation Framework Headers라는 제목을 가지고 있고, 굳이 이 걸 읽어볼 필요는 없고, 참조만 하면 되겠다.
부록 D는 책에서 다뤘던 클래스의 완성판을 예제로 보여준다.
부록 E는 참초 목록이 여럿 나온다. 공부 방향을 잡을 수 있을 것이다.
 
[점수]
통합성 : 90점/100점 - c가 너무 많은 내용 차지..
용어 선정 : 100점/100점
독자 이해도 : 100점/100점
주석 점수 : 100점/100점
참조 목록 : 100점/100점
 
p.s. 좋은 서적 감사합니다. 그런데 c에 대한 내용이 너무 많다는 생각이 듭니다.

 
코멘트 1   공감 0
강영수 2007-08-31 오전 12:15:08
이 책 저도 읽어보고 싶었던 책인데.. 역시 좋은 책인것 같군요, 조만간 구입해서 읽어봐야 할듯.^_^
코멘트작성
 
이메일주소수집거부