본문 바로가기

[책이야기]/[도서리뷰]

[Review] 뇌를 자극하는 C# 5.0 프로그래밍(한빛미디어)



뇌를 자극하는 C# 5.0 프로그래밍
- 박상현 지음-



C# 이란 언어..

 

사실 C#이란 언어를 처음 접했을 떄는 대학교 3학년!!


한참 전공공부에 메달려 있었을 때..


개발 동아리에 들어가 열심히 학부생들을 위해 홈페이지를 만들 때였다. 


그때 한참 객체지향을 공부하다 우연히 C#의 존재를 알게 되었고..


멘토였던 선배한테서 C#의 편리함을 듣고 입문서로 공부했던 책이 바로 


한빛 미디어의 "Head First C#"이라는 책과 자북의 "소설같은 C#"이였다.


둘다 입문서로써 괜찮은 편이었고, 이 책들을 통해 처음으로 C#에 입문하여 한참 사용하다


대학원에 들어온 이후로는 많이 사용하지 않았다...




뇌를 자극하는 C# 5.0 프로그래밍


그렇게 굳어버린 내 C#에 대한 지식들을 깨울 필요성을 느껴..


이 "뇌를 자극하는 C# 5.0 프로그래밍"이라는 책을 읽어 보았다..


일단 목차는 아래와 같다...


목차

1장 프로그래밍을 시작합시다
    1.1 프로그래밍 언어의 역사
    1.2 비주얼 스튜디오 익스프레스 설치하기


2장 처음 만드는 C# 프로그램
    2.1 Hello, World!
    2.2 첫 번째 프로그램 뜯어보기
    2.3 CLR에 대하여
    연습문제


3장 데이터 보관하기
    3.1 데이터에도 종류가 있다
    3.2 변수
    3.3 값 형식과 참조 형식
    3.4 기본 데이터 형식
    3.5 상수와 열거 형식
    3.6 Nullable 형식
    3.7 var: 데이터 형식을 알아서 파악하는 똑똑한 C# 컴파일러
    3.8 공용 형식 시스템
    연습문제


4장 데이터를 가공하는 연산자
    4.1 C#에서 제공하는 연산자 둘러보기
    4.2 산술 연산자
    4.3 증가 연산자와 감소 연산자
    4.4 문자열 결합 연산자
    4.5 관계 연산자
    4.6 논리 연산자
    4.7 조건 연산자
    4.8 비트 연산자
    4.9 할당 연산자
    4.10 연산자의 우선순위
    연습문제


5장 코드의 흐름 제어하기
    5.1 분기문
    5.2 반복문
    5.3 점프문
    연습문제


6장 메소드로 코드 간추리기
    6.1 메소드란? 
    6.2 return에 대하여
    6.3 매개 변수에 대하여
    6.4 참조에 의한 매개 변수 전달
    6.5 출력 전용 매개 변수
    6.6 메소드 오버로딩
    6.7 가변길이 매개 변수
    6.8 명명된 매개 변수
    6.9 선택적 매개 변수
    연습문제


7장 클래스
    7.1 객체 지향 프로그래밍과 클래스
    7.2 클래스의 선언과 객체의 생성
    7.3 객체의 삶과 죽음에 대하여: 생성자와 소멸자
    7.4 정적 필드와 메소드
    7.5 객체 복사하기: 얕은 복사와 깊은 복사
    7.6 this 키워드
    7.7 접근 한정자로 공개 수준 결정하기
    7.8 상속으로 코드 재활용하기
    7.9 기반 클래스와 파생 클래스 사이의 형식 변환, 그리고is 와 as
    7.10 오버라이딩과 다형성
    7.11 메소드 숨기기
    7.12 오버라이딩 봉인하기
    7.13 중첩 클래스
    7.14 분할 클래스
    7.15 확장 메소드
    7.16 구조체
    연습문제


8장 인터페이스와 추상 클래스
    8.1 인터페이스의 선언
    8.2 인터페이스는 약속이다
    8.3 인터페이스를 상속하는 인터페이스
    8.4 여러 개의 인터페이스, 한꺼번에 상속하기
    8.5 추상 클래스: 인터페이스와 클래스 사이
    연습문제 


9장 프로퍼티
    9.1 public 필드의 유혹
    9.2 메소드보다 프로퍼티
    9.3 자동 구현 프로퍼티
    9.4 프로퍼티와 생성자
    9.5 무명 형식
    9.6 인터페이스의 프로퍼티
    9.7 추상 클래스와 프로퍼티
    연습문제


10장 배열과 컬렉션, 그리고 인덱서
    10.1 All for one, one for all 
    10.2 배열을 초기화하는 세 가지 방법 
    10.3 알아두면 삶이 윤택해지는 System.Array
    10.4 2차원 배열 
    10.5 다차원 배열 
    10.6 가변 배열 
    10.7 컬렉션 맛보기
    10.8 인덱서 
    10.9 foreach가 가능한 객체를 만들기
    연습문제


11장 일반화 프로그래밍
    11.1 일반화 프로그래밍이란?
    11.2 일반화 메소드
    11.3 일반화 클래스
    11.4 형식 매개 변수 제약시키기
    11.5 일반화 컬렉션
    11.6 foreach를 사용할 수 있는 일반화 클래스
    연습문제


12장 예외 처리하기
    12.1 예외에 대하여
    12.2 try~catch로 예외 받기
    12.3 System.Exception 클래스
    12.4 예외 던지기
    12.5 try~catch와 finally 
    12.6 사용자 정의 예외 클래스 만들기 
    12.7 예외 처리 다시 생각해보기 
    연습문제 


13장 델리게이트와 이벤트
    13.1 델리게이트란? 
    13.2 델리게이트는 왜, 그리고 언제 사용하나요? 
    13.3 일반화 델리게이트 
    13.4 델리게이트 체인 
    13.5 익명 메소드 
    13.6 이벤트: 객체에 일어난 사건 알리기 
    13.7 델리게이트와 이벤트 
    연습문제 


14장 람다식
    14.1 람다식, 너는 어디에서 왔니?
    14.2 처음 만드는 람다식
    14.3 문 형식의 람다식
    14.4 Func와 Action으로 더 간편하게 무명 함수 만들기
    14.5 식 트리
    연습문제


15장 LINQ
    15.1 데이터! 데이터! 데이터!
    15.2 LINQ의 기본: from, where, orderby, select
    15.3 여러 개의 데이터 원본에 질의하기 
    15.4 group by로 데이터 분류하기 
    15.5 두 데이터 원본을 연결하는 join
    15.6 LINQ의 비밀과 LINQ 표준 연산자
    연습문제


16장 리플렉션과 애트리뷰트
    16.1 리플렉션
    16.2 애트리뷰트
    연습문제


17장 dynamic 형식
    17.1 dynamic 형식 소개
    17.2 COM과 .NET 사이의 상호 운용성을 위한 dynamic 형식
    17.3 동적 언어와의 상호 운용성을 위한 dynamic 형식
    연습문제


18장 파일 다루기
    18.1 파일 정보와 디렉토리 정보 다루기
    18.2 파일을 읽고 쓰기 위해 알아야 할 것들 
    18.3 이진 데이터 처리를 위한 BinaryWriter/BinaryReader 
    18.4 텍스트 파일 처리를 위한 StreamWriter/StreamReader 
    18.5 객체 직렬화하기


19장 스레드와 태스크
    19.1 프로세스와 스레드
    19.2 Task와 Task<TResult>, 그리고 Parallel
    19.3 async 한정자와 await 연산자로 만드는 비동기 코드


20장 WinForm으로 만드는 사용자 인터페이스
    20.1 도대체 무슨 일이 일어나고 있는 걸까?
    20.2 C# 코드로 WinForm 윈도우 만들기
    20.3 Application 클래스
    20.4 윈도우를 표현하는 Form 클래스
    20.5 폼 디자이너를 이용한 WinForm UI 구성
    20.6 사용자 인터페이스와 비동기 작업


21장 네트워크 프로그래밍
    21.1 네트워크 프로그래밍에 앞서 알아둬야 할 기초
    21.2 TcpListener와 TcpClient 
    21.3 흐르는 패킷


22장 가비지 컬렉션
    22.1 가비지 컬렉터를 아시나요 
    22.2 개처럼 할당하고 정승처럼 수거하라 
    22.3 세대별 가비지 컬렉션 

    22.4 가비지 컬렉션을 이해했습니다. 우리는 뭘 해야 하죠? 

맨 처음 본 책의 목차만 봤었는 데..

굉장히 기초에 충실하고 깊이있게 가르쳐주는 고마운 책이라는 생각이 들었다..

그냥 놓일 수 있는 C# 컴파일러의 기능들과 가비지 컬렉션의 원리 등..

목차가 아주 알차다는 생각이 들게하는 책..

그리고 책 표지를 보면 C# 대표도서 "뇌를 자극하는 C# 4.0 프로그래밍(1011)의 두번째 판"이라는

문구와 예제소스들을 다운로드 받을 수 있는 URL들이 친절하게 적혀있다..



보통 특정 프로그래밍 입문 및 전문 서적의 경우 여러 판이 나온다는 건..

그만큼 저자분이 "그 언어와 책에 대한 열정이 가득하다"라는 소리와

"많은 사람들이 찾는다"라는 소리라 생각할 수 있다. 

그리고 이제 겉 표지를 한장 넘기면..

겉표지 뒷면에 책의 로드맵에서 부터 어떤 독자들을 위한 책인지 책의 구성이 어떻게 되는지 등..

간략한 책의 설명이 나와있다..


혹시 몰라 마지막을 펴보니 ..


"어려운 점이 있으면 언제들지 들어오세요" 라는 문구와 함께


이 전판인 C# 4.0을 읽었던 독자들의 서평과 이 책의 독자들을 위한 


한빛미디어의 블로그 주소가 적혀있었다..


정말 이책은 친절한 책이다..



앞장을 몇장 넘기다 보면 나름 마음에 드는 내용들이 있다..


바로 이 책을 입문서적으로 접하는 독자들을 위한 학습 로드맵이 바로 그것이다.


 



이 학습 로드맵은 몇 개의 섹션을 공부할 때 어떤 목표를 가지고 공부를 해야하는 지


그리고 어떤 부분을 독자가 공부하고 있구나를 알게해주는 책이다.


이제 내용을 보자..


사실 지금 이 서평을 적었을 당시에는 끝까지 다 읽은 후이다.


다 읽으면서 느낀건..


이책은 참 깔끔한 책이다.. 


라는 느낌.. 정말 이 책은 챕터 하나하나 다양한 정보들을 알려주려는 게 아닌


정말 말하고 싶은 핵심들을 필요에 따라 그림을 첨가하여


알려주고 있다..


 

 



필요에 따라 "여기서 잠깐" 이라는 코너를 통해 필요한 기반지식을 알려주고 있다.




다만 아쉬운 점은 다양한 예제가 좀 부족하다는 것..


너무 깔끔한 나머지 윈도우 폼 프로그램에서


다양한 컴포넌트를 이용한 예제와 설명이 부족하다는 것..


다른 책들을 보면 많이는 아니지만 기본 컴포넌트를 이용하여 


다양한 프로그램을 작성하는 예제를 많이 보여준다..


사실 c#의 편리함들 중 하나는 "드래그 앤 드롭"을 이용한 손쉬운 컴포넌트 배치와


 컴포넌트에 대한 정의.. 즉, 손쉬운 "윈도우 폼 프로그래밍"이라고 생각하기에..


이러한 부분은 좀 아쉽다고 할 수 있었다.



이 책의 장단점..


앞서 위에서 설명했던 장단점을 정리해 보면 아래와 같다.


[장점]


1. 목차가 아주 알차다는 생각이 들게하는 책..


2. 정말 이책은 친절한 책이다..


3. 이책은 참 깔끔한 책이다.. 



[단점]


1. 다양한 예제가 좀 부족하다는 것..


2. 다양한 컴포넌트를 이용한 예제와 설명이 부족하다는 것..




이 책의 서평을 마치며..

이 책을 다 읽고 나서 느낀점은 입문서로써는 공부하기 좋은 서적이다.. 라는 생각이다. 

아마 c#에 대해서 아직 익숙하지 않거나 어느정도 익숙한데 다음 단계로 자신의 C# 개발 지식들을

조금이라도 높일려는 사람에게 적당한 서적일 것 같다는 생각이 든다.




반응형