메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

헤드 퍼스트 C#(4판)

모던한 객체지향 C# 가이드! .NET과 유니티로 배우는 실전 프로그래밍 지침서

한빛미디어

번역서

판매중

4.8점 (11명)
좋아요 : 5

상상을 초월하는 객체지향 C# 학습법

직관적인 설명과 다채로운 구성으로 생생하게 체험하는 C# 프로그래밍


재치 넘치는 설명과 틀에 박히지 않은 구성으로 복잡한 개념도 쉽게 이해할 수 있습니다. 

친숙한 대화체 스타일과 풍부한 시각자료, 궁금증을 유발하는 스토리가 있어 배운 내용이 머릿속에 오래 남습니다. C#의 핵심 기능을 친절하게 풀어 설명하고, 현업에서 실제로 활용할 수 있는 전문가의 팁을 소개하는 등 원칙에 충실하면서도 실용적인 학습 환경을 제공합니다.

 

70개 이상의 연습 문제를 해결하며 독자가 학습에 적극적으로 참여할 수 있습니다.

지루한 이론 대신 흥미진진한 실습을 중심으로 연습 문제와 퀴즈를 직접 풀며 C# 프로그래밍에 대한 이해를 높일 수 있습니다. 개념을 학습한 뒤에는 〈유니티 연구실〉에서 유니티 게임 프로젝트를 실습하며 C#을 즐겁게 익힐 수 있는 기회를 제공합니다. 유니티 활용법과 게임 개발에 대한 통찰력은 덤!

 

어떤 환경에서든 누구나 따라 할 수 있는 완벽한 C# 프로그래밍 안내서입니다.

맥OS 환경에서도 실습할 수 있도록 〈Visual Studio for Mac 학습자 가이드〉를  제공합니다. 또한 C#과 유니티, .NET 프레임워크와 비주얼 스튜디오에 관한 유용한 지식과 활용법을 소개함으로써 초보자부터 개발자까지 다양한 수준의 독자를 아우릅니다.

 

헤드 퍼스트 C# 4판 상세이미지(700px).jpg

앤드류 스텔만 저자

앤드류 스텔만

메이저 투자 은행의 부사장으로 재직하며 실시간 백엔드 시스템을 설계했다. 마이크로소프트, 전미경제연구소, MIT의 소프트웨어 팀을 관리하고 그들을 컨설팅하며 훌륭한 프로그래머들과 협업했다.

 

 

제니퍼 그린 저자

제니퍼 그린

철학을 전공한 독특한 이력이 있다. 온라인 서비스 업체를 비롯하여 회계, 미디어 등 다양한 분야의 소프트웨어 테스팅을 담당했고, 그 후로 소프트웨어 개발자와 테스터, PM을 관리하는 일을 했다.

 

이재윤[감수] 역자

이재윤[감수]

다양한 분야에 관심이 많은 개발자. 하루하루 호기심을 충족하기 위해 노력 중이다. 카카오를 거쳐 현재는 미국계 스타트업에서 일하고 있다.

정영수[감수] 역자

정영수[감수]

읽고 배우기를 좋아하는 개발자. 네이버를 거쳐 현재는 미국계 테크 스타트업에서 일하고 있다.

이수겸 역자

이수겸

책을 통해 세상을 배웠고, 프로그래밍도 그중 하나다. 한국과 미국에서 소프트웨어 엔지니어로 각각 10여 년을 보냈고, 현재는 로블록스에서 백엔드 엔지니어로 일하고 있다.

이 책에 쏟아진 찬사

헤드 퍼스트 시리즈에 쏟아진 찬사

오라일리의 다른 책

지은이 소개 

옮긴이의 말

 

Chapter 00 들어가며 | 이 책을 읽는 방법

 

__이 책의 독자

__이 책이 이렇게 된 이유

__이 책의 구성

__여러분의 두뇌를 정복하는 방법

__일러두기 

__테크니컬 리뷰어

__감사의 글

 

Chapter 01 C#으로 개발 시작하기 | 멋진 프로그램을 만들어 봅시다!

 

__왜 C#을 배워야 하나요?

__C# 코드 작성과 생태계 탐험에 필요한 도구, 비주얼 스튜디오

__비주얼 스튜디오에서 첫 프로젝트 만들기

__C#으로 게임 만들기

__게임 설계하기

__1단계: 비주얼 스튜디오에서 WPF 프로젝트 생성하기

__2단계:XAML을 사용해서 창 디자인하기

__게임 화면 디자인하기

__XAML 속성을 통해 창 크기와 제목 지정하기

__XAML 그리드에 행과 열 추가하기

__행과 열 크기를 똑같이 조정하기

__그리드에 TextBlock 컨트롤 추가하기

__이제 코드를 작성할 준비가 됐습니다

__게임 초기화 메서드 추가하기

__SetUpGame( ) 메서드 구현하기

__프로그램 실행하기

__새 프로젝트를 소스 제어 시스템에 추가하기

__게임 완성을 위한 마우스 클릭 이벤트 작성하기

__마우스 클릭에 반응하는 TextBlock 만들기

__TextBlock_MouseDown( ) 메서드 채우기

__컨트롤 마우스 클릭 이벤트에 연결하기

__타이머 추가해서 게임 완성하기

__게임에 타이머 기능 추가하기

__디버거로 예외 추적하기

__게임 완성하기

__소스 제어 시스템의 코드 갱신하기

 

Chapter 02 C#의 매력에 빠져 보기 | 명령문, 클래스, 코드

 

__콘솔 앱 구성 파일 자세히 살펴보기

__동일한 네임스페이스에 2개의 클래스 두기

__앱을 구성하는 최소 단위, 명령문 알기 

__데이터를 다루기 위해 변수 사용하기

__변수를 다루는 새 메서드 만들기

__메서드에 연산자를 사용하는 코드 추가하기

__디버그를 사용해 변수 값의 변화 관찰하기

__변수에 연산자 사용하기

__조건을 검사하는 if 문

__특정 작업을 반복하는 반복문 알기

__코드 조각 기능으로 반복문 작성하기

__UI 역학을 다루는 컨트롤 알아보기

__컨트롤을 실험하기 위한 WPF 애플리케이션 만들기

__앱에 TextBox 컨트롤 추가하기

__TextBlock의 값을 바꾸는 C# 코드 추가하기 

__숫자 입력만 허용하는 이벤트 처리기 추가하기

__Slider를 그리드의 아래쪽 행에 추가하기

__C# 코드를 추가해 컨트롤 작동시키기

 

유니티 연구실 #1 유니티로 C# 탐험하기

 

__유니티는 강력한 게임 디자인 도구입니다

__유니티 허브 다운로드하기 

__유니티 허브를 사용해 새 프로젝트 생성하기

__유니티 레이아웃 조정하기

__씬은 3D 환경입니다

__유니티 게임 오브젝트로 구성된 게임

__게임 오브젝트를 움직이는 이동 기즈모

__게임 오브젝트의 컴포넌트를 보여 주는 인스펙터

__구체 게임 오브젝트에 머티리얼 추가하기

__구체 회전시키기

__툴 보기와 씬 기즈모로 씬 카메라 움직이기

__창의성을 발휘하세요!

 

Chapter 03 객체를 소개합니다 | 이해하기 쉬운 코드 만들기

 

__재사용되는 유용한 코드 짜기

__매개 변수를 받고 값을 반환하는 메서드

__카드 뽑기 앱 만들기 

__PickRandomCards 콘솔 앱 만들기 

__PickSomeCards( ) 메서드 마무리하기 

__CardPicker 클래스 마무리하기

__애나가 만드는 게임 알아보기

__고전 게임의 종이 프로토타입 만들기

__WPF 버전으로 카드 뽑기 앱 만들기

__쌓는 형태로 컨트롤을 배치하는 컨테이너 StackPanel 

__CardPicker 클래스 재사용하기

__Grid와 StackPanel을 사용해서 메인 창에 컨트롤 배치하기

__카드 뽑기 데스크톱 앱의 UI 배치하기

__객체를 사용해 애나의 문제 풀어 보기

__클래스를 사용해 객체 생성하기

__클래스로부터 만든 새 객체, 인스턴스

__애나를 위해 가져온 해결책, 객체

__필드를 사용해 인스턴스의 상태 기록하기

__고마운 기억 공간, 힙

__프로그램의 마음에는 무엇이 있나?

__읽기 어려운 코드

__직관적인 클래스와 메서드 이름 사용하기

__두 사람의 상호작용을 위한 클래스 만들기

__객체를 쉽게 초기화하는 C# 코드

__C# 대화형 창을 사용해서 C# 코드 실행하기

 

Chapter 04 타입과 참조 | 참조 이해하기

 

__오언은 도움이 필요합니다!

__다양한 타입의 데이터가 존재하는 캐릭터 시트

__데이터의 종류를 결정하는 변수의 타입

__정수를 저장할 수 있는 여러 C# 타입들

__문자열을 다뤄 봅시다

__코드에 직접 기록되는 값, 리터럴 알아보기

__변수는 데이터를 담는 컵

__다양한 크기의 타입 알아보기

__5파운드짜리 주머니에 10파운드짜리 데이터 넣기 

__캐스팅을 사용해 값 변환하기

__자동 변환이 일어나는 경우 알아보기 

__매개 변수 타입과 호환되는 메서드 호출 인수

__오언의 능력치 실험 돕기

__C# 컴파일러를 사용해 문제의 코드 찾기

__참조 변수를 사용해 객체에 접근하기

__다중참조와 부작용

__참조를 사용해 서로 대화하는 객체 

__여러 값을 저장하는 배열 알아보기

__참조 변수를 포함하는 배열

__null: 참조가 가리키는 객체가 없습니다

__슬로피 조의 샌드위치 가게에 오신 것을 환영합니다!

 

유니티 연구실 #2 유니티에서 C# 코드 작성하기

 

__게임 오브젝트에 C# 스크립트 작동 추가하기

__게임 오브젝트에 C# 스크립트 추가하기

__구체를 회전시키는 C# 코드 작성하기

__중단점 설정하고 게임 디버깅하기

__디버거를 사용해 Time.deltaTime 살펴보기

__Y축 위치를 표시하는 원기둥 추가하기

__클래스에 회전 각도와 속도를 나타내는 필드 추가하기

__Debug.DrawRay를 사용해 3D 벡터의 작동 방식 살펴보기

__게임을 실행해 씬에서 광선 확인하기

__씬에서 공이 점 주위를 회전하도록 만들기

__유니티를 통해 회전과 벡터 자세히 살펴보기 

__창의성을 발휘하세요!

 

Chapter 05 캡슐화 | 데이터 기밀 유지하기

 

__칼 데미지 계산하기 

__데미지를 계산하는 콘솔 앱 만들기 

__WPF 애플리케이션에서 데미지 계산기 디자인하기 

__WPF 데미지 계산기의 코드 숨김 파일 작성하기 

__오언의 칼 데미지 계산기에 대해 토론하기 

__오류를 고쳐 봅시다 

__Debug.WriteLine을 사용해 진단 정보 출력하기 

__실수로 객체를 잘못 사용하는 경우 

__캡슐화로 클래스의 데이터 기밀 유지하기 

__캡슐화로 클래스의 메서드와 필드에 대한 접근 제어하기 

__RealName 필드는 정말로 보호되고 있나요? 

__private 필드와 메서드는 같은 클래스의 인스턴스로만 접근할 수 있습니다 

__왜 캡슐화를 사용하느냐고요? 객체를 블랙 박스라고 생각해 봅시다 

__캡슐화를 사용해 SwordDamage 클래스 개선하기 

__캡슐화로 데이터를 안전하게 보호하기 

__PaintballGun 클래스를 테스트하는 콘솔 앱 만들기 

__속성으로 캡슐화를 쉽게 하기 

__Balls 속성을 사용하도록 Main( ) 메서드 수정하기 

__자동 구현 속성으로 단순한 코드 만들기 

__private setter를 사용해 읽기 전용 속성 만들기 

__탄창의 크기를 바꿔 봅시다 

__매개 변수가 있는 생성자를 사용해서 속성 초기화하기 

__new 키워드 사용 시 인수 지정하기

 

Chapter 06 상속 | 객체의 가계도

 

__다른 무기의 데미지 계산하기

__switch 문을 사용해 조건을 맞춰 보기

__하나만 더요. 단검의 데미지를 계산할 수 있을까요? 철퇴나 방망이는요?

__클래스에서 상속을 사용하면, 코드를 한 번만 작성해도 됩니다

__일반적인 요소에서 구체적인 요소로 클래스 모델 만들기

__동물원 시뮬레이터 설계해 보기 

__기본 클래스를 확장하는 하위 클래스 

__콜론을 사용해서 기본 클래스 상속하기

__하위 클래스는 메서드를 재정의하거나 상속한 멤버를 다른 것으로 교체할 수 있습니다

__하위 클래스에서만 구현되는 멤버

__디버거로 재정의의 작동 방식 이해하기

__앱을 만들어 virtual과 override 살펴보기 

__하위 클래스는 기본 클래스의 메서드를 숨길 수 있습니다

__행위를 상속하기 위해 override 와 virtual 키워드 사용하기

__기본 클래스에 생성자가 있으면, 하위 클래스는 생성자를 호출해야 합니다

__오언의 작업을 마무리해 봅시다 

__벌집 관리 시스템 만들기

__Queen 클래스: 여왕벌이 일벌을 관리하는 법

__UI: 디자인 화면에 XAML 추가하기

__벌집 관리 게임의 방향을 결정하는 피드백

__절대로 인스턴스화되지 않는 클래스

__의도적으로 완성되지 않은 추상 클래스

__어떤 클래스는 절대 인스턴스화되면 안 됩니다

__본체가 없는 추상 메서드 알아보기

__추상 메서드처럼 작동하는 추상 속성 작성하기

 

유니티 연구실 #3 게임 오브젝트 인스턴스

 

__유니티에서 게임을 만들어 봅시다! 

__Materials 폴더에 새 머티리얼 생성하기 

__임의의 씬 위치에 당구공 생성하기 

__디버거를 사용해 Random.value 이해하기 

__게임 오브젝트를 프리팹으로 만들기 

__게임을 제어하는 스크립트 생성하기

__메인 카메라에 스크립트 연결하기 

__Play 버튼을 눌러 코드 실행하기 

__인스펙터 창을 사용해 게임 오브젝트 인스턴스 다루기 

__물리 법칙을 통해 공이 겹치지 않게 하기 

__창의성을 발휘하세요!

 

Chapter 07 인터페이스, 캐스팅, is | 약속을 지키는 클래스

 

__벌 클래스 계층 구조에 새 하위 클래스 추가하기 

__캐스팅을 사용해 DefendHive 메서드를 호출할 수 있습니다 

__인터페이스는 클래스가 구현해야 하는 메서드와 속성을 정의합니다 

__인터페이스 연습하기 

__인터페이스의 인스턴스는 만들 수 없지만, 인터페이스를 참조할 수는 있습니다 

__인터페이스 참조는 보통의 객체 참조 

__인터페이스를 사용해 객체의 작동 정의하기 

__IWorder의 Job 속성은 핵입니다 

__is를 사용해 객체의 타입 검사하기 

__is를 사용해 하위 클래스의 메서드에 접근하기 

__서로 다른 동물이 헤엄치거나 무리 사냥을 하도록 하려면 어떻게 해야 할까요?

__인터페이스를 사용해 동일한 작업을 수행하는 클래스 다루기 

__is로 안전하게 클래스 계층 구조 탐색하기 

__안전한 타입 변환을 위한 또 하나의 키워드: as 

__클래스 계층 구조를 오르내리기 위해 업캐스팅과 다운캐스팅 사용하기 

__CoffeeMaker를 Appliance로 업캐스팅하기 

__Appliance를 다시 CoffeeMaker로 다운캐스팅하기 

__인터페이스로도 업캐스팅, 다운캐스팅하기 

__다른 인터페이스를 상속하는 인터페이스 

__정적 멤버를 가지는 인터페이스 

__인터페이스 메서드에 본체를 추가하는 기본 구현 

__ScareAdults 메서드와 기본 구현 추가하기 

__WPF 컨트롤을 자동으로 갱신하는 데이터 바인딩 

__데이터 바인딩을 사용하도록 벌집 관리 시스템 수정하기 

__다형성은 객체가 여러 형태를 가질 수 있음을 의미합니다

 

Chapter 08 열거형과 컬렉션 | 데이터 조직하기

 

__문자열은 데이터 분류에 적합하지 않습니다 

__열거형은 유효한 값의 모음을 다룰 수 있게 해 줍니다 

__열거형으로 숫자에 이름을 붙일 수 있습니다 

__카드 한 벌을 만드는 데 배열을 사용할 수 있지만요... 

__리스트로 아무거나 모아서 쉽게 저장하기 

__배열보다 유연한 리스트 

__신발장 앱 만들기 

__모든 타입을 저장할 수 있는 제네릭 컬렉션 

__컬렉션 이니셜라이저는 객체 이니셜라이저와 비슷합니다 

__오리 리스트를 만듭시다 

__리스트는 쉽지만 정렬은 까다롭습니다 

__IComparable<Duck>을 사용해서 리스트 안 오리 정렬하기 

__IComparer 사용해서 정렬 방법 지시하기 

__비교자 객체 인스턴스 만들기 

__ToString( ) 메서드를 재정의해서 객체가 스스로를 설명하게 하기 

__Duck과 Card가 자신의 정보를 콘솔에 출력하도록 foreach 반복문 수정하기 

__IEnumerable<T>를 사용해 리스트 전체를 업캐스팅하기 

__사전을 사용해 키와 값 저장하기 

__Dictionary 클래스 기능의 개요 

__사전을 사용해 프로그램 만들기 

__그 외의 컬렉션 타입들... 

__큐는 선입선출입니다 

__스택은 후입선출입니다

 

유니티 연구실 #4 사용자 인터페이스

 

__플레이어가 공을 클릭했을 때 점수 증가시키기 

__게임의 두 가지 모드 

__게임 모드 추가하기 

__게임에 UI 추가하기 

__UI에 점수를 표시하는 텍스트 구성하기 

__게임을 시작하는 메서드를 호출하는 버튼 추가하기 

__Play Again 버튼과 Score 텍스트 작동시키기 

__게임의 코드 마무리하기

__창의성을 발휘하세요!

 

Chapter 09 LINQ와 람다 | 데이터 통제하기

 

__지미는 캡틴 어메이징의 광팬입니다 

__LINQ를 사용해 컬렉션 쿼리하기

__LINQ는 어떤 IEnumerable<T> 참조로도 작동합니다 

__LINQ 쿼리 문법 

__LINQ 객체 다루기 

__LINQ 쿼리를 사용해 지미의 앱 마무리하기 

__var 키워드로 변수 타입 자동으로 추론하기 

__LINQ 쿼리는 결과 값에 접근하기 전까지 실행되지 않습니다 

__group 쿼리를 사용해 시퀀스를 여러 그룹으로 분리하기 

__join 쿼리를 사용해 두 시퀀스의 데이터 합치기 

__new 키워드로 익명 타입 생성하기 

__지미의 만화 컬렉션 앱에 유닛 테스트 프로젝트 추가하기 

__첫 유닛 테스트 작성하기 

__GetReviews( ) 메서드의 유닛 테스트 작성하기

__유닛 테스트를 사용해서 경계 조건과 이상한 데이터 처리하기 

__=> 연산자를 사용해 람다 식 만들기 

__람다 시승하기 

__람다를 사용해 Clown 리팩터링하기 

__람다에서 조건문을 위한 ?: 연산자 사용하기 

__람다 식과 LINQ 

__LINQ 쿼리는 메서드 체이닝 형태로 작성할 수 있습니다 

__=> 연산자 사용해서 switch 식 만들기

__Enumerable 클래스 살펴보기

__열거 가능한 시퀀스 직접 생성하기 

__yield return 문을 사용해 직접 시퀀스 생성하기 

__yield return 문을 사용해 ManualSportSequence 리팩터링하기

 

Chapter 10 파일 읽고 쓰기 | 한 개의 바이트도 놓치지 않을 거예요!

 

__.NET은 스트림을 사용해 데이터를 읽고 기록합니다 

__서로 다른 스트림은 서로 다른 대상을 읽고 씁니다 

__FileStream은 파일에 있는 바이트를 읽고 씁니다 

__손쉬운 3단계: 텍스트를 파일에 쓰기 

__스윈들러의 악마적 계획 

__StreamReader를 사용해서 파일 읽기 

__데이터는 여러 스트림을 거쳐 이동할 수 있습니다 

__정적 File, Directory 클래스를 사용해 파일과 디렉터리 다루기 

__IDisposable을 사용해 객체 확실히 닫기 

__MemoryStream을 사용해 메모리에 데이터 스트림하기 

__객체가 직렬화될 때 어떤 일이 일어나나요? 

__객체의 상태는 정확히 무엇이고, 어떤 것이 저장되나요? 

__JsonSeriallization을 사용해 객체 직렬화하기 

__JSON은 특정한 C# 타입이 아닌 데이터만 포함합니다 

__다음 화: 데이터를 깊게 파고들어 봅시다 

__C# 문자열은 유니코드로 인코딩됩니다 

__비주얼 스튜디오에서 유니코드는 잘 작동합니다 

__.NET은 글자와 텍스트를 유니코드로 저장합니다 

__C#은 데이터 전송을 위해 byte 배열을 사용할 수 있습니다 

__BinaryWriter를 사용해 이진 데이터 기록하기 

__BinaryReader를 사용해 데이터 다시 읽어 들이기 

__16진수 덤프는 파일에 있는 바이트 값을 확인할 수 있게 해 줍니다 

__StreamReader를 사용해 16진수 덤프 앱 만들기 

__명령줄 인수를 사용하도록 16진수 덤프 앱 수정하기

 

유니티 연구실 #5 레이캐스팅

 

__새 유니티 프로젝트 생성하고 씬 뷰 구성하기 

__카메라 구성하기 

__플레이어 게임 오브젝트 생성하기 

__유니티의 내비게이션 시스템을 소개합니다 

__내비메시 설정하기 

__플레이어가 자동으로 플레이 영역 이동하게 만들기

 

Chapter 11 객체의 죽음 | 캡틴 어메이징

 

__객체의 삶과 죽음 

__가비지 컬렉션 클래스를 사용해 가비지 컬렉션 강제하기 

__무언가를 할 마지막 기회, 종료자 

__종료자는 정확히 언제 실행되나요? 

__종료자는 다른 객체에 의존할 수 없습니다 

__구조체는 객체처럼 보이지만... 

__값은 복제되고, 참조는 할당됩니다 

__구조체는 값 타입, 객체는 참조 타입입니다 

__스택 vs 힙: 메모리에 대해서

__out 매개 변수를 사용해 한 개 이상 값을 반환하는 메서드 만들기 

__ref 한정자를 사용해 참조로 전달하기

__선택적 매개 변수로 기본값 설정하기 

__null 참조는 어떤 객체도 참조하지 않습니다 

__null을 허용하지 않는 참조 타입은 NRE를 방지해 줍니다 

__null 병합 연산자 ??로 null 값 다루기 

__null을 허용하며 안전하게 처리할 수 있는 nullable 값 타입 

__예전 같지 않은 ‘캡틴’ 어메이징 

__기존 클래스에 새로운 작동을 추가하는 확장 메서드 

__string 기본 타입 확장하기

 

Chapter 12 예외 처리 | 계속 불만 끄는 건 짜증 나죠

 

__16진수 덤프 앱은 명령줄에서 파일명을 읽어 들입니다 

__예외가 발생하면 CLR이 예외 객체를 생성합니다 

__모든 예외 객체는 System.Exception을 상속합니다 

__덤프할 수 없는 파일도 있습니다 

__위험한 메서드를 호출하면 어떤 일이 벌어지나요? 

__try/catch 문으로 예외 처리하기 

__디버거로 try/catch 흐름 추적하기 

__항상 실행해야 할 코드가 있으면, finally 블록을 사용하세요 

__System.Exception을 처리하는 catch-all 예외 

__상황에 맞는 예외를 사용하세요 

__정확한 예외 처리기를 만드는 데 도움을 주는 예외 필터 

__최악의 catch 블록: catch-all과 주석 

__임시 방편도 괜찮아요 

 

유니티 연구실 #6 씬 내비게이션

 

__작업하던 유니티 프로젝트를 이어서 진행해 봅시다 

__씬 뷰에 플랫폼 추가하기 

__베이크 옵션을 사용해 Platform을 걸을 수 있는 오브젝트로 만들기 

__내비메시에 계단과 경사로 포함시키기 

__내비메시의 높이 문제를 고쳐 봅시다 

__내비메시 장애물 추가하기 

__장애물을 위아래로 이동시키는 스크립트 추가하기 

__창의성을 발휘하세요!

 

Appendix Ⅰ ASP.NET Core Blazor 프로젝트 | Visual Studio for Mac 학습자 가이드

 

__왜 C#을 배워야 하나요? 

__Visual Studio for Mac에서 첫 프로젝트 만들기

__C#으로 게임 만들기 

__비주얼 스튜디오에서 Blazor WebAssembly 앱 생성하기 

__브라우저에서 Blazor 웹 앱 실행하기 

__이제 코드를 작성할 준비가 됐습니다 

__이모지 리스트를 생성하고 앱에 표시하기 

__동물 이모지의 순서 섞기 

__디버거에서 게임 실행하기 

__새 프로젝트를 소스 제어 시스템에 추가하기 

__마우스 클릭 이벤트 작성하기 

__마우스 클릭에 반응하는 버튼 만들기 

__이벤트 처리기 테스트하기 

__디버거로 예외 추적하기 

__오류를 추적해 봅시다 

__승리하면 게임을 초기화하는 코드 추가하기 

__게임에 타이머 기능 추가하기 

__내비게이션 메뉴 정리하기 

__UI의 역학을 좌우하는 컨트롤 

__새 Blazor WebAssembly 앱 프로젝트 생성하기 

__슬라이더 컨트롤이 있는 페이지 만들기 

__텍스트 입력 추가하기 

__색상 선택기와 날짜 선택기 추가하기 

__Blazor로 카드 뽑기 앱 만들기 

__행과 열로 구성된 페이지 

__슬라이더는 데이터 바인딩을 사용해 변수를 갱신합니다 

__슬로피 조의 싸구려 샌드위치 가게에 오신 것을 환영합니다!

 

 

Appendix Ⅱ 코드 카타 | 숙련자와 참을성 없는 사람을 위한 코드 카타 가이드

 

찾아보기

모던한 객체지향 C# 가이드!

.NET과 유니티로 흥미롭게 배우는 실전 프로그래밍! 

 

다음 세 가지 질문에 “예"라고 대답할 수 있다면 이 책은 바로 당신을 위한 것입니다!

 

✔ C#과 유니티를 사용한 게임 프로젝트에 관심이 있습니까?

✔ 무미건조한 글공부보다는 직접 실습해 보는 쪽을 선호합니까?

✔ 기술만을 강조하는 지루한 강의보다는 즐겁게 대화를 나누며 C#을 배우고 싶습니까?

 

『헤드 퍼스트 C#(4판)』은 .NET 프레임워크와 유니티를 활용한 C# 프로그래밍을 다룹니다. 이 책을 읽고 나면 C#의 클래스와 객체를 완벽하게 이해하고, 상속, 캡슐화, 추상화, 다형성 등 객체지향 프로그래밍의 원리를 마스터할 수 있습니다. 유니티 게임 프로젝트와 실용적인 연습 문제를 풀어 보며 C# 프로그래밍을 이해하고 자신감을 키워 보세요. 

 

예제 파일 다운로드

→ www.hanbit.co.kr/src/11160

→ https://github.com/head-first-csharp/fourth-edition

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

 

Head First 시리즈는 기술 서적 중에서도 쉽게 접근할 수 있도록 설계된 시리즈로 유명합니다.

 

저 역시도 Head First 디자인 패턴 책을 읽으면서 감탄 했던 경험이 있습니다.

 

Head First 특징으로 예제와 그림, 퀴즈 등을 통해 독자들이 쉽게 학습할 수 있도록 작성되어 있습니다. 한국식 책과 달리 미국식(?) 학습 방식을 도입하여 책을 읽는 동안 흥미를 유발하고 기억에 남습니다.

 

복잡한 개념이나 언어적인 부분도 최대한 쉽게 설명하려고 노력합니다. 어려운 주제라도 가능한 한 독자 친화적으로 전달하고자 합니다.

디자인 패턴 책에서는 피자가게를 확장시키면서 템플릿 메서드 패턴이 왜 필요한지 Head First 책을 통해 느꼈었습니다.

 

객체, for문, 상속, 인터페이스, 캐스팅, 열거형, 컬렉션 을 설명합니다.

이 책은 개발에 경험이 적은 초보자를 대상으로 합니다. 그러므로 프로그래밍에 대한 경험이 많지 않은 사람들도 이해하기 쉽게 구성되어 있습니다.따라서 처음 언어를 공부하는 사람에게 적합합니다.

 

C# 책을 선택하게 된 이유는 제가 게임 회사를 다니는데 보통 게임은 C#이나 C++로 만든다고 합니다. 저는 대학교 1학년 때 C언어를 배운 후 그 이후로 C언어 공부를 하지 않아 기억도 나지 않을 뿐더러(studio.h만 기억납니다) 유니티로 개발하는 다른 팀원의 코드를 보니 궁금하기도 해서 책을 신청하게 되었습니다. 물론 Head First 시리즈는 다 가지고 싶습니다.

 

요즘은 간편하게 사용할 수 있는 파이썬이 유행이지만, 아직 국내에서는 상용화된 프로그램 개발에 C++, JAVA, C, C# 같은 프로그래밍 언어들이 더 많이 사용된다. 어쩌다 보니, 이들 언어 대부분 다 겪어 봤는데, 내 경우 펌웨어, 임베디드 쪽에서는 C나 C++을 안드로이드 앱 개발에는 자바에서 코틀린으로 바꾸고 있는 중이다. 그래도 전체적으로 가장 많이 쓰고 있는 컴퓨터 언어는 C#이다. 일반 업무용 애플리케이션, 자동화 라인에 들어가는 PC용 프로그램 개발 대부분에 사용 중이다.

 

C# 덕분에 먹고살았다고 해도 과언이 아니다. 그만큼 가장 애정이 가는 언어고, 가장 편하게 쓸 수 있는 프로그래밍 언어다. 그러기에 앤드류 스텔만과 제니퍼 그린이 지은 '헤드퍼스트 C# 4판'은 다른 책보다 남다른 마음으로 보았다.

 

 

일단 이 책이 아니더라도 헤드 퍼스트 시리즈를 본 사람이라면, 헤드 퍼스트 시리즈만의 남다른 특징이 있다는 것을 잘 알 것이다. 노트 필기나 첨삭 지도하는 것처럼 느껴지는 자유분방한 구성, 편한 대화체 조언, 다양한 비유와 묘사를 섞은 위트 있는 설명 등 한마디로 재미난 책이다. 이수겸 옮긴이의 말을 보면, 헤드 퍼스트는 머리가 앞서는 행동 또는 충동적이고 무모한 성격을 나타내는 관용구라고 한다. 충동적, 자유분방함 다 맞는 거 같다.

 

이런 특징을 '헤드퍼스트 C#'도 고스란히 담고 있다. 딱딱한 느낌보다는 사람 냄새 솔솔 풍기는 그런 책이다. 그런데 교과서처럼 순차식으로 구성된 책을 선호하는 사람 경우 이런 구성이 생소해서 어렵게 느껴질 수도 있을 것이다.

 

 

그도 그럴 것이 '헤드퍼스트 C#'에서는 챕터 1에 일단 비주얼 스튜디오를 사용해서 다짜고짜 같은 그림 클릭해서 지우는 게임을 만들어 본다. 1부터 100 더하기 그런 게 아니다. WPF의 XAML, 마우스 클릭 같은 이벤트 제어가 나오고, List, foreach, 타이머 Threading 같은 게 나온다. 실무에서 많이 쓰는 것들이 그냥 처음부터 나오는 것이다. 그러니 당연히 어렵게 느껴질 수밖에 없다.

 

이렇게 하는 것은 일단 비주얼 스튜디오를 어떻게 사용하고, C# 언어가 어떻게 생겼는지 맛보기 위해서 하는 거다. 구석구석 다양한 설명이 같이 되어 있지만, 프로그래밍 언어를 전혀 모르는 초보는 무척 당황스러울 수 있다. 사실 챕터 2부터가 더 쉽다. 기초적인 C# 문법 설명이 주가 되기 때문이다.

 

초보는 겁먹을 수 있겠으나, 기존에 다른 프로그램 언어를 사용해 본 경험이 있는 사람에겐 오히려 좋은 방법이다. 그리고 이것이 프로그램 언어를 보다 빨리 익히는 방법이라고 생각한다. 간단한 프로그램 짜며 연습하는 것도 좋으나, 어렵더라도 실제 어느 정도 제대로 된 프로그램을 만들어 보는 것이 컴퓨터 언어를 마스터하는데 더 도움이 된다. 내 경험이 전부를 대표하지는 않으나 내 경험 결과는 그렇다.

 

 

책에 있는 그대로 따라 해보는 것 자체가 초보에게는 모험이면서 도전이다. 어렵게 완성해서 잘 작동하는 프로그램을 보며, 스스로 뿌듯해지고, 자신감도 생기는 거다. 잘 안돼도 그 과정 속에서 배우는 것이 진짜 많다. '헤드퍼스트 C#'의 좋은 점 중에 하나가 디버깅 연습을 해본다는 것이다. 디버깅을 못하면, 프로그래머가 될 수 없다. 에러 난 거 못 잡으면, 프로그램이 작동도 안 한다. 어쩌다 작동해도 나중에 오류 나서 찰진 욕만 듣게 된다.

 

아무튼 챕터 1 잘 이해 안 되면, 그냥 빠르게 읽어 나가고, 나중에 다시 보면 된다. 그때는 분명 이해 될 것이다.

 

 

'헤드퍼스트 C#'에 나오는 C# 문법 설명도 아마 다른 책과 많이 다를 것이다. 대부분의 책들은 이런 뜻이고, 이렇게 작성하고 이런 결과가 나온다가 전부다. 우리가 가장 편하게 생각하는 주입식 강의다.

 

그러나 '헤드퍼스트 C#'은 왜?, 이렇게 하면 어떻게 될까?, 의미가 뭐지? 이런 질문을 던져 코드의 의미를 다시 생각해 보게 한다. 우회로, 다른 방법, 효과적인 방법을 찾게도 한다. 강제적으로 생각을 하게 만든다.

 

오래전에 외국인 개발자와 함께 일하며, 그들이 하는 수업도 들을 적 있었는데, 그때도 이런 식으로 질문과 사고를 유도해서, 성질 급한 나는 답답하기도 하고, 상당히 낯설어 했던 기억이 난다. 이런 차이 때문에 이 과정이 다소 어렵게 느껴질 수 있으나, 그래도 책에선 뜸을 들이지만 정확한 답과 방향을 알려주고 있으니, 부담될 정도까지는 아니다.

 

 

게다가 책 곳곳에 연습문제가 나오고 있고, 쓰면서 제대로 공부하기, 무엇이든지 물어보세요, 코드 줄긋기, 낱말 퀴즈, 코드자석 같이 퍼즐을 푸는 형태로 C# 학습에 재미를 주면서, 깊이 있게 C#을 이해할 수 있게 돕기도 한다.

 

그리고 또 한 가지 특징을 들자면, 이 책은 윈도뿐만 아니라, 맥 사용자를 위한 내용도 담고 있다. 아예 부록편에 맥 사용자를 위한 Visual Studio for Mac 학습자 가이드가 있어 보다 상세히 설명하고 있다.

 

 

'헤드퍼스트 C#'을 읽게 되면 두 가지 덤을 얻을 수 있다. 우선 하나는 덤으로 게임 엔진 유니티에 대한 기초 지식을 얻을 수 있다는 것이다. 깊이 있는 내용까지는 아니지만, 책 내용이 게임 개발을 모티브로 한 스토리텔링 형식으로 내용을 전개하고 있으므로 게임 개발을 염두에 두고 C#을 배우려는 사람에게는 더욱 유용한 덤이 될 것이다.

 

또 다른 덤은 '헤드퍼스트 C#'에 다 못 담은 이벤트 처리기, delegate, MVVM, 추가 유니티 연구실 등을 깃허브에서 PDF 파일로 받아 볼 수 있다는 것이다. 자료들이 영문이지만, 구글 문서 번역 서비스를 이용하면 아쉬운 대로 쓸만하다.

 

초보는 아닌 만큼, 처음에는 유지 보수 차원에서 읽어 본다는 의미도 있었으나, '헤드퍼스트 C# 4판'을 읽다 보니, 재미도 있었고, 내가 제대로 몰랐던 부분도 여럿 확인할 수 있었다. 비주얼 스튜디오에 C# 대화형 창 기능이 있다는 것도 처음 알았다. 맨날 쓰던 기능만 쓰다 보니, 이런 게 있는 줄도 몰랐다. 아무튼 이렇게 재미있고 독특한 방식으로 C#을 설명하는 책은 '헤드퍼스트 C# 4판'이 유일할 것이다.

 

빠르게 C#을 익히려는 타 언어 개발자 또는 C# 초보 중에서도 실무에 근접한 다양한 정보를 얻으며 C#을 처음부터 제대로 배우려는 분에게 잘 어울리는 책이라 생각한다.

아직 중급 이상의 프로그래밍 경험이 없는 초심자의 경우 이 책을 만난 것은 정말 행운아이다. 요즘은 프로그래밍을 위한 온라인 강의도 많고 온라인 자료도 많고, 꼭 유료 강좌가 아니더라도 유튜브라는 좋은 친구이자 선생이 있다. 그럼에도 불구하고 서적을 통한 학습은 온라인이라는 거대한 정보에서 허우적거리지 않고, 체계적으로 학습하는데 있어 큰 도움이 된다.
이전에 몇몇 헤드퍼스트 시리즈를 읽어 봤다. 언제 인지 기억도 잘 나지 않을 만큼 오래된것 같다. 오랫만의 헤드퍼스트 시리즈가 그런지 더 반가웠던것 같다. 헤드퍼스트(Head First)라는 것이 '머리가 앞서는 행동' 자체, 또는 충동적이고 무모한 성격을 나타내는 관용구라고 저자가 서두에서 한번 이야기 해주듯 뭔가 독특한 편집과 이야기하듯 자연스럽게 학습할 수 있도록 도와준다. 그림도 많이 사용되고 문체도 좀 독특하다. 이런 설명자체가 생소할 수 있지만 글씨로만 가득채우고 가끔 도표나 그림 한둘 보여주는 여느 전공서적과는 결이 좀 다르다. 하지만 이러한 방식은 초보자에게 특히 도움이 된다. 그리고 이러한 표현방식 자체가 번역을 통해서 전달하는 과정에서 원래 의도와 살짝 달라진다던가 이상한 표현이 되어 이해하기 힘들 수 있는데 역자 이수겸님이 그러한 부분도 잘 짚어 준다. 역자가 단순히 영어만 잘하는 것이 아닌 다년간의 미국생활과 다년간의 개발 경험이 잘 녹아서라 생각한다.
C#을 주 언어로 사용하지는 않지만 간헐적으로 사용할 일이 잦은 편이다. 유니티를 위해 어쩔 수 없이(?) 사용하는 개발자를 제외하고 C#은 예전에 비해 인기가(물론 국내 한정이다. 해외에서는 '23년에 꽤 언어 순위가 올랐다.) 살짝 사그러든 느낌은 지울 수 없다. 워낙 다양한 분야에서 여러 언어를 사용하고 있어서 상대적일 수 있지만... 이 책은 저자가 앞에서 설명하듯 기존에 다른 언어를 접했으면 좋긴 하겠다만, '호기심 + 흥미'만 있더라도 따라올 수 있다고 하고 있다. 정말 생초보에게도 도움이 될만한 내용을 담고 있으며, 차근 차근 책을 따라가다보면 C#의 기초에서 부터 유니티를 활용하여 예재를 활용한 게임개발도 접할 수 있도록 실습 위주로 다양한 내용을 담고 있다.
다시한번 말하지만, 이 책을 읽는 이가 초심자라면 정말 괜찮은 길잡이를 만났다는 것은 자신있게 말할 수 있다.
 
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

Untitled.png

 

이번에 책 “헤드퍼스트 C# 4판”을 통해 C#을 학습해 보았습니다. 과거 헤드퍼스트 시리즈를 통해 다른 언어들을 학습해 본적이 있습니다. php와 python으로 기억하는데 무언가 뇌를 자극하는 책 읽기라고 생각되는 헤드퍼스트 시리즈 만의 학습법이 신선하였고 학습효과 또한 좋았던 경험이 있었습니다. 그래서 이번에 헤드퍼스트 시리즈를 통해 C#을 배운다는 것이 기대가 되었던 이유입니다.

C#의 어떤 문법을 배우는데 있어 이 책보다 설명이 친절한 책이 있을까 싶을 정도로 쉽게 설명해주는 것이 이 책의 특징입니다. 챕터 하나하나가 제가 느끼기에 정말 군더더기 없이 쉽게 설명되어 있습니다. 또한 스스로 생각할 수 있게 연습해 볼 수 있기 때문에 머리속에 더 오래 기억할 수 있습니다.

대게 유니티 게임 개발을 위해 C# 언어를 학습하려는 분들이 많은데 그런 분들에게 이 책이 아주 유용할 것이라고 생각됩니다. C#과 함께 유니티까지도 배울 수 있기 때문입니다. 유니티 연구실이라는 챕터가 존재해 게임에 필요한 C# 코드를 작성해볼 수 있게 책이 구성되어 있습니다. 유니티에 대해 꽤 상세히 설명 해주기 때문에 유니티 입문에도 많은 도움이 될 것 입니다.

과거 헤드퍼스트 시리즈보다 구성과 디자인, 내용도 많은 업그레이드가 이루어진 것 같아 적극 추천하는 바 입니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.”

01.jpg

 

02.jpg

 

예전부터 바라던 책이 드디어 나온 느낌입니다. 웹기획 업무와 인터넷 쇼핑몰 운영을 하면서 앱이나 게임을 직접 만들어 보고 싶다는 바램을 항상 가져왔습니다. 관련 서적을 이용하여 몇 번이나 시도를 했다가 실패했던 이유는 객체지향프로그래밍 개념과 관련 용어들을 제대로 이해하지 못했기 때문이기도 했고 책의 내용이 너무 문법에 치우쳐 한번 다 따라 해 보기는 했지만 그 후에 뭘 해야 할지 로드맵을 잡지 못했기 때문입니다.

 

그러다 객체지향개념과 관련해서는 C#과 JAVA를 익혀 보면서 이해가 되기 시작했고, 유니티를 이용해 보면서 상당부분 자신감을 얻게 되었습니다. 그래서 항상 애플리케이션 개발자를 지망하는 사람들은 C#과 유니티를 반드시 먼저 접해 봐야 한다고 생각하게 되었고 C#과 유니티를 함께 익힐 수 있는 책이 나와 주길 바래 왔는데 헤드 퍼스트 C#(4판)을 접하면서 그 갈증이 해소된 느낌입니다.

 

 

03.jpg

 

'헤드 퍼스트(Head First)'의 뜻은 물속으로 다이빙하는 사람처럼 '머리가 앞서는 행동' 자체를 표현하거나 충동적이고 무모한 성격을 나타내는 관용구라고 합니다. 이것 저것 재지말고 한번 끝까지 따라와 봐! 발가락으로 물에 들어 갈까 말까 고민하지 말고 머리부터 디밀어 봐! 라고 말하는 것 같아요. 이를 위해, 어디에 어떻게 쓸지도 모르면서 지루하게 레퍼런스를 익히는 책이 아니라 그야말로 용의주도하게 잘 설계된 강의를 글로 풀어 놓은 것 같은 느낌을 줍니다. 이 책의 내용을 머리와 손으로 따라 가면서 C# 언어를 익히고 동시에 C#으로 무엇을 할 수 있는지도 감을 잡게 됩니다.

 

 

04.jpg

 

특히, 예전 헤드 퍼스트 시리즈는 영어권 학습자들에게나 맞는 삽화나 위트가 잔뜩 들어 있어 오히려 책을 통한 학습에 방해가 되는 면도 있었으나 최근 나오는 한국어판 헤드 퍼스트 시리즈는 한빛미디어의 노력으로 한국인들의 정서에 어울리는 일러스트와 자상한 설명으로 가득 차 있습니다. 더욱 편하게 책을 따라 갈 수 있었어요.

 

예를들어 화살표 처리하여 추가 설명하고 있는 파란색 글자 부분과 챕터를 마무리하면서 제공되는 요점 정리는 학습자가 궁금해 할 수 있는 부분을 어쩜 그리 쪽집게처럼 잘 짚어 내고 있는지 깜짝 깜짝 놀란 경우가 한 두번이 아닙니다. 이번 헤드 퍼스트 C#(4판)이 유난히 더 그런 면이 강한 것 같습니다.

 

어떻게 이렇게 많은 내용들을 중복되는 내용 없이 한권의 책에 집어 넣을 수 있는지 감탄할 수 밖에 없습니다.

 

 

05.jpg

 

초보자도 제대로 시작할 수 있는 C# 입문서 역할과 더불어 C#을 스크립트 언어로 이용하는 유니티를 사용한 흥미로운 게임 프로젝트를 별도로 제공하고 있는 점도 정말 마음에 들었습니다. 이 책이 제공하는 C# 입문 프로젝트의 대부분은 게임이기도 합니다. 게임이 C#을 배우기 매우 적합한 형식이기 때문입니다.

 

또한 비주얼 스튜디오와 유니티 툴 모두 윈도우와 맥OS에서 사용가능하여 C#에 익숙해지면 윈도우와 맥 모두에서 구동 가능한 앱과 게임을 제작할 수 있게 됩니다. 이처럼 광범위한 C# 개발 프로젝트를 가벼운 마음으로 흥미롭게 즐기면서 따라갈 수 있도록 게임을 선택한 점도 마음에 쏙 듭니다.

 

 

06.jpg

 

C#은 객체지향 언어이기 때문에 프로그래머 지망생들을 좌절시키는 여러가지 객체지향 개념과 용어들을 사용하게 됩니다. 생산성 높게 그리고 효율적으로 개발 프로젝트를 진행하기 위해 탄생한 객체지향 개념이지만 입문자들에게는 분명 진입장벽이 되는 것도 사실입니다. 하지만 이 책을 매일 조금씩 따라 가다 보면 C# 또는 앱 개발에 어느새 두어걸음 성큼 다가서 있는 자신을 발견하게 될 것입니다. 2023년을 마무리하면서 정말 좋은 책을 만났습니다. 감사합니다.

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

 

일반적인 c# 개발 지침서인가하여 아무 페이지나 열어보았다

처음 느낀건 아주 잘정리된 수업 노트, 정리가 뭔줄아네.....예술이다하는 느낌이었다.

 

20231224_145438.jpg


그리고 보게된 첫부분들중에서 다음의 문구는 나의 눈길을 고정하게 만들었다.

 

평소 나 자신이 생각하는 강의 방향이고, 이를 원칙으로 강의를 진행해왔었다.

그리고 느낀 한계나 벽은 낮지않았다.

한데 이러한 방식의 집필서인가하는 마음에 설레었다.

 

20231224_150609.jpg


이론보다는 실습, 실습위주의 프로그램으로 시작해서 역으로 문법을 배운다

 

이것이 나의 강의 전제였기에 놀랐다.

그리고 차근차근 첫 클래스부터 따라해보았다.

내용의 진행은 실습을 우선으로하면서, 뒷부분에서 조금씩 문법을 설명해주어 아주 마음에 드는 내용이다.

옆에서 강사가 1대1로 설명을 해주는듯한 집필 방식이다.

단순히 따라하는것이 아닌 왜 이렇게 하는것인지를 설명하듯 알려주는것 같다.

근데...이 책의 단점도 있는데, UI를 끌어오고 배치하고 하는 부분을 단계적으로

그람으로 설명해주는 책에 비해서 진도가 2~3배 이상 느리다는것이다.

그럴수밖에 없는것이 프로그램을 따라하면서 만드는것이 아니라, 다정하게 알려주는방식이다보니 , 어쩔수 없는것 같다.

그리고 UI배치를 직관적으로 보여주지않다보니 그러한 부분은 너무 어렵게 생각된다.

 

20231224_145556.jpg


위와 같이 완성된 UI나 완성되어 가는 과정을 이미지로 보여주는것이 아니고 핵심

 

코드의 부분을 잘 정리해주는 방식이다보니, 코드의 이해가 부족한 분들에게 적적 추천 할 만하다.

그러나 끈기는 많이 필요한것 같다.

 

20231224_145640.jpg


c#이 쉬운 언어이고 개발이 쉽기는 하지만, 막상 코드를 개발한다고 하면 , 흐름의 관리가 쉽지않고, 또한 타인의 코드를 이해하는것이 쉽지도 안다.

 

이러한 이유로 이 책이 진행하는 코드 설명방식은 아주 흥미롭다.

그러나 결코 만만하지는 않을것이다.

  C# 은 .NET 환경이 발표될 즈음 기존 Visual J++이 사라지고. 처음 발표된 것이 오래지 않은 것 같은데, 벌써 20살이 넘은 언어가 되어버렸다. 처음에는 C# 이 Java에 비해 성능이 떨어지고 어짜피 Visual J++ 처럼 크게 인기를 못 끌 것이라 생각했었지만, 점점 버전이 높아지면서 새로운 기능과 편리성이 개선되었고, 점차 Linux 와 Mac 환경도 지원하면서 점점 더 매력적인 언어가 되고 있다고 생각된다.

이번에 리뷰하게 된 헤드 퍼스트 C# 은 버전 9.0과 Visual Studio 2022를 대상으로 설명이 되어 있어, C# 을 처음 배우는 분들도 별다른 어려움 없이 책의 내용을 바로 연습해 볼 수 있다. 

  처음 책을 받아서 책의 목차를 살펴 보았을 때, 눈에 띄는 부분은 Appendix 부분이었다.

Pasted Graphic.png

 

Pasted Graphic 1.png

 

  Visual Studio for Mac 이 나왔을 때, 처음 기대한 것과 달리 C++ 개발 미지원 및 C# UI 개발환경의 차이 등으로 인해, 굳이 windows 환경이 있는데 뭐하러 Mac에서 개발을 해야할까 라고 생각하며 Windows 환경에서만 툴을 사용했었다. 이번 버전에는 각 챕터별로 제공하는 UI 프로그램에 대해 Mac에서도 따라해 볼 수 있도록, 개발 방법을 별도로 설명해주는 점이 이 책의 장점 중 하나라는 생각이 들었다. Windows에서 이 책의 예제를 따라해보고, Mac에서 다시 한번 동일 예제를 따라해 보니 큰 어려움 없이 따라 할 수 있었고 두 플랫폼간 툴이 가진 약간의 차이도 이해할 수 있어 책에 대한 만족감이 더 커졌다.

  또 다른 눈에 띄는 점은, 툴을 돌려 결과를 보지 않고, 머리로 생각해보고 손으로 그려보거나 직접 종이를 잘라 만들어보는 부분이 존재하는 것이다. 물론 게임과 관련된 부분이나 UI 관련된 부분이어서 굳이 안하고 넘어가도 되지만, 먼저 코딩을 하기 전에 ‘이런 부분도 함께 고려를 해야했었네’ 라고 깨닫는 기회를 제공한다는 생각이 들었다.

Pasted Graphic 2.png

 

  또 다른 이 책의 장점은, Console 버전의 응용을 간단히 만들어보고, 동일한 기능을 하거나 좀 더 발전된 기능의 UI 버전 프로그램을 만들어보도록 예제를 만든 것이라 생각된다. 프로그램을 개발한다는 것은 새로운 것을 계속해서 배우고 익혀야하는 작업이라 할 수 있는데, 특히 새로운 프로젝트에 적용하기 위해 빠른 시간에 무언가를 익혀서 적용해야할 경우, 눈에 보이는 예시를 통해, 바로 이해할 수 있게 제공되는 튜토리얼이 있으면 정말 좋은 것 같다. 이 책이 모든 것을 다 제공하는 만능은 아니지만, 이러한 필요성을 가지고 접근하는 독자에게는 좋은 참고자료가 될 수 있다고 생각된다. 또 처음 이 언어를 배우는 분들에게도 Console 환경의 사용법 뿐만 아니라 UI를 쉽게 바로 작성할 수 있는 좋은 예는 더 흥미를 끄는 요소일 것이라 생각된다.

 

  계속해서 장점만을 이야기했지만… 이 책 뿐만 아니라 헤드 퍼스트 시리즈의 특성으로 인해 이 책은 호불호가 될 수 있는 부분이 있는데… 책에 설명이 너무 많다는 점이다. 설명이 많아서 너무 좋다 라고 생각하시는 분도 있을 수 있지만, 너무 글이 많아서 정신이 없다 라고 생각하시는 분들도 있을 수 있어, 이런 부분은 책 구매 시 고려해야할 수 있는 부분이다.

  그리고 이 책은 정말 친절하게 그리고 상세하게 많은 부분을 설명해주고 있지만, 다른 언어를 배운 적이 없는 분들에게는 조금 어렵게 다가올 수 있을 것이라 생각한다. 책의 구성이나 설명이 오히려 혼란을 가져올 수 있다. 특히 책 표지에 언급된 ‘초보자’ 라는 단어가 오해를 줄 수 있을 수 있는 표현일 수 있겠다는 생각이 들었다. 좀 더 쉽고 재밌게 책을 즐기기 위해서는 ALGOL계열 언어(C, C++, Java 등)에 대한 기초 학습 정도는 먼저 필요하지 않을까 하는 생각이 든다.

 

  요즘은 아무리 쉬운 프로그래밍 언어라도 책의 두께가 수백에서 천페이지가 넘어가는 책들이 많아, 이 책의 두께는 그리 무리가 없는 수준이라 생각된다. 특히 책의 예제가 게임을 기반으로 한 예제가 많아 생각보다 재밌게 따라할 수 있고 유니티에 관심있는 분들은 유니티와 C# 을 같이 맛볼 수 있는 자료라 더 재밌게 책을 읽어나갈 수 있었다. C# 언어를 좀 더 재밌게 배워보고 싶은 분들에게 일독을 추천한다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

[책리뷰] 헤드퍼스트 C# (4판)

 

 

 

 

전반적인 소감 및 마음에 드는 부분

같은 출판사 한빛미디어에서 나온 '이것이 C#이다'  책을 추천한 적이 있었지만, 그보다는 이 책이 더 좋다는 느낌을 받았다. 헤드 퍼스트 시리즈가 마음에 드는 점은 C# 언어를 익히며 동시에 C#으로 무엇을 할 수 있는지를 보여준다. 프로그래밍 언어 입문서 아무것도 잡고 첫 장을 보면 "Hello World"를 출력하는 간단한 프로그램을 만든다. 대부분 이걸로 시작한다. 그 다음 십중팔구 int가 뭐고 데이터 자료형이 어쩌고 이런 식으로 전개해나간다. 그러나 헤드퍼스트 C#은 전혀 달랐다. 내용 전개 방식이 다음과 같았다.

  1. 우린 이제부터 앱을 만들꺼야!
  2. 그런데 그 앱을 C#으로 만들껀데, 이거는 이러이러한 점이 좋아서 쓸꺼야
  3. 이제 알려준대로 다운받아서 설치하고
  4. 다 했어? 그러면 간단한 "게임"을 만들어보자!

그렇다. Hello World 따위는 집어치우고 바로 독자들이 원하는 형태의 앱을 만들어보기 시작한다. 물론 여러가지 익숙하지 않은 용어들이 난무한다. 하지만 그림이 많기 때문에 그냥 보고 따라하면 된다. 이것이 이 책의 가장 큰 장점이다. 비주얼 스튜디오를 이용한 C#만으로도 충분히 게임을 만들 수 있지만, 이 책은 한번 더 나아가 유니티를 이용하여 동일한 방식으로 어떻게 게임을 만드는지도 알려준다. 

 

그림만 보더라도 무얼 설명하려는지 단번에 이해가 된다

 

 

 

그렇다고해서 데이터 타입과 같은 내용을 안 다루느냐?! 그건 아니다. 우선 C#을 이용하여 간단한 앱을 만들어보게 하여 흥미유발을 시켜놓고, 데이터 타입이 필요할 때에 다루기 시작한다. 모든 챕터가 이런 식이다. 앱을 만들다가 해당 내용이 필요한 시점에 본격적으로 다룬다. 그렇기 때문에 이 책은 참고서처럼 앞뒤 왔다갔다 하면서 볼 수 있는 것이 아니라 앞에서부터 천천히 전부 다 봐야하는 책이다.

 

대상 독자 및 책 난이도

책에서 말하는 대상 독자는 다음과 같다.

  1. C#과 유니티를 사용한 게임 개발에 대해 배우고 싶습니까?
  2. 무미건조한 독서보다는 실습해 보는 쪽을 선호합니까?
  3. 무미건조하고 기술적인 내용만 강조하는 강의보다는 즐겁게 대화를 나누고 싶습니까?

간단하게 C#과 .Net 프레임워크를 사용하려는 개발자들에게 적합하다고 본다. 개인적으로는 프로그래밍 첫 입문 언어로 C#이 좋다고 생각하는데, 게임을 만들고 싶은데 첫 시작을 어떻게 해야할지 모르는 사람들에게도 추천한다. 요즘 같은 시대에 그래픽스 API까지 공부하면서 게임을 만들려면 너무 시간이 오래걸린다. 빠르게 뭐라도 만들어보고 싶은 초보자들에게는 유니티를 권하는데, 프로그래밍을 아무것도 모르는 사람들이라면 이 책으로 입문하는 것이 좋아보인다.

 

이 책은 참고서가 아니라 학습서이다. 때문에 내용 설명에 방해될 만한 부분은 최대한 생략되고 나머지 요약 정리부분에 따라 등장한다. 또한 앞 내용을 알아야지만 뒷 내용을 이해할 수 있도록 구성되어있기 때문에 앞에서 천천히 차근차근 읽어나가야 한다. 같은 내용이라고 하더라도 서로 다른 방법과 매체로 다시 얘기해주기 때문에 조급해하지 말고 읽어나가면 된다.

 

이 책은 대화체를 사용했기 때문에 마치 누군가에게 배우는 듯한 느낌을 준다. 심지어 중간중간에 나오는 질의응답은 개발자 면접 질문으로도 나올법한 내용이기 때문에 정독하는 것을 권장한다. 키워드 <무엇이든 물어보세요> 부분은 반드시 모두 읽어보기를 권한다. 이 책의 핵심 내용 중 하나이기 때문이다. 

 

다중 상속의 위험성을 보여준다

 

 

 

 

 

 

다루는 내용과 범위

책이 다루는 C#의 내용은 딱 입문자 용이다. 큰 챕터만 나열해보자면 다음과 같다.

  • C#으로 개발 시작하기 - WPF 프로젝트 생성하여 간단한 게임 제작
  • 비주얼 스튜디오 이용하여 C# 코드를 다루고 앱을 구현하는 방법 - 명령문, 클래스, 코드 작성
  • 이해하기 쉬운 코드 만들기 - 객체 생성 및 활용
  • 참조 이해하기 - 타입과 참조의 특성, 프로그램에서 데이터 다루는 법
  • 데이터 기밀 유지하기 - 캡슐화, 객체의 데이터를 비공개로 설정하는 방법, 속성 추가
  • 상속 - 상속 및 클래스 다이어그램, 설계
  • 인터페이스 - 특정한 작업을 수행하는 객체, 인터페이스, 캐스팅, is
  • 데이터 조작하기 - 열거형과 컬렉션, 데이터 정리 및 저장
  • 데이터 통제하기 - LINQ와 람다, 데이터 조회 및 그룹화
  • 파일 읽고 쓰기 - 데이터,파일 저장 및 읽기, 직렬화, 16진수, 유니코드, 이진 데이터
  • 객체의 수명 관리
  • 예외 처리
  • 유니티 연구실 - 유니티 활용하여 2D/3D 게임 제작 (총 6챕터)

C#과 유니티 내용이 각각 절반씩 들어있다고 보면 된다. 전체 페이지수도 약 776쪽이나 되지만, 그림이 많아서 부담은 없는 편이며 두꺼운 책에 비해 가격은 42,000원이다. 그러나 그 값어치는 제대로 한다고 생각한다. 이 책은 C# 9.0과 비주얼 스튜디오 2022 버전을 기준으로 집필되었다. 유니티 버전은 2021 버전이다. 

 

 

 

결론

이전에 리뷰했던 '이것이 C#이다'와 비교하게 된다. 그러나 확연한 차이점은 있다. '이것이 C#이다' 책은 참고서 느낌이였다면 '헤드퍼스트 C#'은 학습서이다. 따라서 양자택일 하라고 하면 개발자 능력에 따라 나뉘겠지만, 입문자라면 '헤드퍼스트 C#'을 적극 추천한다. 

 

 

 

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

학습자인 독자에게

대화를 하는 것처럼 일상의 언어로

어찌 보면 만연체에 가까운 어투로 쉽고 자세하게 설명하고 있습니다.

 

다양한 페이지 레이아웃, 그림들,

순서도, 도표, 코드, 만화 같은 일러스트의 대화 방식 등

이제껏 보아온 책들과는 전혀 다른 방식으로 C#을 알려줍니다.

 

계속해서 다른 언어들을 공부하고 있어서인지,

C#은 처음 접하는데도 익숙한 구문들이 보여서

학습하기에 어려운 것은 없고, 설명을 잘 읽어보면

보다 깊은 이해를 할 수 있을 것 같습니다.

 

개념은 비슷하지만 언어마다 특화된 각자의 문법이 있으니,

이 책에서 제시하는 학습 방향을 따라서 C#만의 특징을 이해하고 배우면 될 것 같습니다.

 

C# 개발자에게 중요한 기술이라고 하는 XAML을 사용하여

UI를 설계하는 것은 처음 접하는 생소한 것이어서 어려운 느낌이 들었습니다.

UI 화면과 코드가 상응하는 것이 신기합니다.

그리고 6개의 유니티 연구실 파트를 통해서 C#을 학습하도록 안내하는 부분은

더 많은 학습이 필요할 것 같습니다.

 

처음 접하는 언어임에도

전문용어로 도배된 글이 아니어서

읽고 이해하는 것이 비교적 다른 책들보다 쉽고,

오히려 이 책에서 읽은 문법에 대한 개념들을 잘 기억하면

다른 언어를 학습하고 이해하는 것에 도움이 된다는 것이 장점인 것 같습니다.

 

읽어주셔서 감사합니다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 








안녕하세요, 오늘은 C#을 배우기 위한 책을 소개하려고 해요. 이 책은 제가 최근 읽어본 책 중에서 정말 독특하고 흥미로운 책 중 하나에요. 이 책을 통해 C#을 처음 접하는 분들은 물론, 이미 약간의 컴퓨터 배경이 있는 분들에게도 유용할 것 같아서 여러분과 공유하고자 합니다.

우선, 이 책을 독특하게 만드는 특징 중 하나는 작가의 특별한 응답성과 학생들에 대한 관심입니다. 제가 주목한 부분 중 하나는 작가가 독자들의 문제에 민감하게 반응하고 그에 맞춰 도움을 주는 모습이에요. 게다가 책이 출판된 후에도 작가는 계속해서 학습 경험을 개선하기 위해 노력하고 새로운 콘텐츠를 제공하고 있다는 점이 정말 인상적이었습니다.

이 책에서 제공되는 실습문제들은 정말 재미있고, 신중하게 구성되어 있어요. 어느 정도의 컴퓨터 지식이 있다면 이 책에서 얻을 수 있는 이점이 더 큰 것 같아요. 또한, 이 책을 구매하면 컴퓨터 앞에서 많은 시간을 보내게 될 것이라는 점을 염두에 두셔야 합니다. 코딩은 직접 해보면서 배우는 것이 가장 효과적이기 때문이죠.

종합하자면, "C#을 배우는 여정"은 정말 즐거운 여정이었습니다. 이 책을 통해 프로그래밍을 배우는 과정이 지루하지 않고 흥미롭게 느껴졌습니다. 다양한 경험을 통해 실력을 키울 수 있으며, 프로그래밍을 처음 시작하는 분들이나 취미로 코딩을 즐기고자 하는 분들에게 특히 유용한 자료가 될 것으로 기대됩니다. 여러분도 이 여정을 함께 즐기길 바랍니다!



한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공 받아 작성된 서평입니다.

 

업무에 C#을 활용하고 있어서 관심있게 본 책인데, 도움이 많이 되었다. 일단 WPF 프로그래밍, xaml, C#에 대해 궁금한 것이 있어 검색을 하면 한글로 된 글은 찾기가 힘들고, 그마저도 도움되는 자료가 거의 없다. 그리고 오래된 글이 대부분이라 그게 참 아쉬웠다. 우리나라에선 많이 쓰질 않으니...사실 해외도 모르겠지만 ㅎㅎ

그리고 이 코드가 쓰이는 이유를 모르고 복붙하는 경우가 적지 않았는데, 옆에서 이야기해주듯 자세히 설명이 되어 있어서 코드를 이해하고 쓰는 데 도움이 되었다.

 

그리고 헤드 퍼스트 시리즈는 이 책이 처음인데, 음 뭐랄까 다른 책의 경우에는 뭔가 정돈된 느낌? 이라면 이 책은 실제 개발 프로세스를 거치는 듯이 서사가 이어지는 느낌이 더 강했다. 약간 중구난방이라 느낄 수도 있을 것 같긴 한데 이런 방식의 책도 괜찮은 것 같다.

 

WPF 프로그래밍이든 C#이든 참 정이 안가는 친구들이긴 한데...앞으로 계속 사용할 지도 잘 모르겠기는 한데...이 불모지 같은 곳에 내려온 한줄기 빛이 이 책이 아닐까 싶다. 예제들 풀어보면서 업무가 좀 더 수월해질 수 있다면 좋겠다.

 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
헤드 퍼스트 C#(4판)
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
헤드 퍼스트 C#(4판)
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
헤드 퍼스트 C#(4판)
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실

최근 본 책0