헤드 퍼스트 C# : 모던한 객체지향 C# 가이드! .NET과 유니티로 배우는 실전 프로그래밍 지침서 (4판)

헤드 퍼스트 C# : 모던한 객체지향 C# 가이드! .NET과 유니티로 배우는 실전 프로그래밍 지침서 (4판)

$43.02
저자

앤드류스텔만,제니퍼그린

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

목차


이책에쏟아진찬사
헤드퍼스트시리즈에쏟아진찬사
오라일리의다른책
지은이소개
옮긴이의말

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

__이책의독자
__이책이이렇게된이유
__이책의구성
__여러분의두뇌를정복하는방법
__일러두기
__테크니컬리뷰어
__감사의글

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

__왜C#을배워야하나요?
__C#코드작성과생태계탐험에필요한도구,비주얼스튜디오
__비주얼스튜디오에서첫프로젝트만들기
__C#으로게임만들기
__게임설계하기
__1단계:비주얼스튜디오에서WPF프로젝트생성하기
__2단계:XAML을사용해서창디자인하기
__게임화면디자인하기
__XAML속성을통해창크기와제목지정하기
__XAML그리드에행과열추가하기
__행과열크기를똑같이조정하기
__그리드에TextBlock컨트롤추가하기
__이제코드를작성할준비가됐습니다
__게임초기화메서드추가하기
__SetUpGame()메서드구현하기
__프로그램실행하기
__새프로젝트를소스제어시스템에추가하기
__게임완성을위한마우스클릭이벤트작성하기
__마우스클릭에반응하는TextBlock만들기
__TextBlock_MouseDown()메서드채우기
__컨트롤마우스클릭이벤트에연결하기
__타이머추가해서게임완성하기
__게임에타이머기능추가하기
__디버거로예외추적하기
__게임완성하기
__소스제어시스템의코드갱신하기

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

__콘솔앱구성파일자세히살펴보기
__동일한네임스페이스에2개의클래스두기
__앱을구성하는최소단위,명령문알기
__데이터를다루기위해변수사용하기
__변수를다루는새메서드만들기
__메서드에연산자를사용하는코드추가하기
__디버그를사용해변수값의변화관찰하기
__변수에연산자사용하기
__조건을검사하는if문
__특정작업을반복하는반복문알기
__코드조각기능으로반복문작성하기
__UI역학을다루는컨트롤알아보기
__컨트롤을실험하기위한WPF애플리케이션만들기
__앱에TextBox컨트롤추가하기
__TextBlock의값을바꾸는C#코드추가하기
__숫자입력만허용하는이벤트처리기추가하기
__Slider를그리드의아래쪽행에추가하기
__C#코드를추가해컨트롤작동시키기

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

__유니티는강력한게임디자인도구입니다
__유니티허브다운로드하기
__유니티허브를사용해새프로젝트생성하기
__유니티레이아웃조정하기
__씬은3D환경입니다
__유니티게임오브젝트로구성된게임
__게임오브젝트를움직이는이동기즈모
__게임오브젝트의컴포넌트를보여주는인스펙터
__구체게임오브젝트에머티리얼추가하기
__구체회전시키기
__툴보기와씬기즈모로씬카메라움직이기
__창의성을발휘하세요!

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

__재사용되는유용한코드짜기
__매개변수를받고값을반환하는메서드
__카드뽑기앱만들기
__PickRandomCards콘솔앱만들기
__PickSomeCards()메서드마무리하기
__CardPicker클래스마무리하기
__애나가만드는게임알아보기
__고전게임의종이프로토타입만들기
__WPF버전으로카드뽑기앱만들기
__쌓는형태로컨트롤을배치하는컨테이너StackPanel
__CardPicker클래스재사용하기
__Grid와StackPanel을사용해서메인창에컨트롤배치하기
__카드뽑기데스크톱앱의UI배치하기
__객체를사용해애나의문제풀어보기
__클래스를사용해객체생성하기
__클래스로부터만든새객체,인스턴스
__애나를위해가져온해결책,객체
__필드를사용해인스턴스의상태기록하기
__고마운기억공간,힙
__프로그램의마음에는무엇이있나?
__읽기어려운코드
__직관적인클래스와메서드이름사용하기
__두사람의상호작용을위한클래스만들기
__객체를쉽게초기화하는C#코드
__C#대화형창을사용해서C#코드실행하기

Chapter04타입과참조|참조이해하기

__오언은도움이필요합니다!
__다양한타입의데이터가존재하는캐릭터시트
__데이터의종류를결정하는변수의타입
__정수를저장할수있는여러C#타입들
__문자열을다뤄봅시다
__코드에직접기록되는값,리터럴알아보기
__변수는데이터를담는컵
__다양한크기의타입알아보기
__5파운드짜리주머니에10파운드짜리데이터넣기
__캐스팅을사용해값변환하기
__자동변환이일어나는경우알아보기
__매개변수타입과호환되는메서드호출인수
__오언의능력치실험돕기
__C#컴파일러를사용해문제의코드찾기
__참조변수를사용해객체에접근하기
__다중참조와부작용
__참조를사용해서로대화하는객체
__여러값을저장하는배열알아보기
__참조변수를포함하는배열
__null:참조가가리키는객체가없습니다
__슬로피조의샌드위치가게에오신것을환영합니다!

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

__게임오브젝트에C#스크립트작동추가하기
__게임오브젝트에C#스크립트추가하기
__구체를회전시키는C#코드작성하기
__중단점설정하고게임디버깅하기
__디버거를사용해Time.deltaTime살펴보기
__Y축위치를표시하는원기둥추가하기
__클래스에회전각도와속도를나타내는필드추가하기
__Debug.DrawRay를사용해3D벡터의작동방식살펴보기
__게임을실행해씬에서광선확인하기
__씬에서공이점주위를회전하도록만들기
__유니티를통해회전과벡터자세히살펴보기
__창의성을발휘하세요!

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

__칼데미지계산하기
__데미지를계산하는콘솔앱만들기
__WPF애플리케이션에서데미지계산기디자인하기
__WPF데미지계산기의코드숨김파일작성하기
__오언의칼데미지계산기에대해토론하기
__오류를고쳐봅시다
__Debug.WriteLine을사용해진단정보출력하기
__실수로객체를잘못사용하는경우
__캡슐화로클래스의데이터기밀유지하기
__캡슐화로클래스의메서드와필드에대한접근제어하기
__RealName필드는정말로보호되고있나요?
__private필드와메서드는같은클래스의인스턴스로만접근할수있습니다
__왜캡슐화를사용하느냐고요?객체를블랙박스라고생각해봅시다
__캡슐화를사용해SwordDamage클래스개선하기
__캡슐화로데이터를안전하게보호하기
__PaintballGun클래스를테스트하는콘솔앱만들기
__속성으로캡슐화를쉽게하기
__Balls속성을사용하도록Main()메서드수정하기
__자동구현속성으로단순한코드만들기
__privatesetter를사용해읽기전용속성만들기
__탄창의크기를바꿔봅시다
__매개변수가있는생성자를사용해서속성초기화하기
__new키워드사용시인수지정하기

Chapter06상속|객체의가계도

__다른무기의데미지계산하기
__switch문을사용해조건을맞춰보기
__하나만더요.단검의데미지를계산할수있을까요?철퇴나방망이는요?
__클래스에서상속을사용하면,코드를한번만작성해도됩니다
__일반적인요소에서구체적인요소로클래스모델만들기
__동물원시뮬레이터설계해보기
__기본클래스를확장하는하위클래스
__콜론을사용해서기본클래스상속하기
__하위클래스는메서드를재정의하거나상속한멤버를다른것으로교체할수있습니다
__하위클래스에서만구현되는멤버
__디버거로재정의의작동방식이해하기
__앱을만들어virtual과override살펴보기
__하위클래스는기본클래스의메서드를숨길수있습니다
__행위를상속하기위해override와virtual키워드사용하기
__기본클래스에생성자가있으면,하위클래스는생성자를호출해야합니다
__오언의작업을마무리해봅시다
__벌집관리시스템만들기
__Queen클래스:여왕벌이일벌을관리하는법
__UI:디자인화면에XAML추가하기
__벌집관리게임의방향을결정하는피드백
__절대로인스턴스화되지않는클래스
__의도적으로완성되지않은추상클래스
__어떤클래스는절대인스턴스화되면안됩니다
__본체가없는추상메서드알아보기
__추상메서드처럼작동하는추상속성작성하기

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

__유니티에서게임을만들어봅시다!
__Materials폴더에새머티리얼생성하기
__임의의씬위치에당구공생성하기
__디버거를사용해Random.value이해하기
__게임오브젝트를프리팹으로만들기
__게임을제어하는스크립트생성하기
__메인카메라에스크립트연결하기
__Play버튼을눌러코드실행하기
__인스펙터창을사용해게임오브젝트인스턴스다루기
__물리법칙을통해공이겹치지않게하기
__창의성을발휘하세요!

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

__벌클래스계층구조에새하위클래스추가하기
__캐스팅을사용해DefendHive메서드를호출할수있습니다
__인터페이스는클래스가구현해야하는메서드와속성을정의합니다
__인터페이스연습하기
__인터페이스의인스턴스는만들수없지만,인터페이스를참조할수는있습니다
__인터페이스참조는보통의객체참조
__인터페이스를사용해객체의작동정의하기
__IWorder의Job속성은핵입니다
__is를사용해객체의타입검사하기
__is를사용해하위클래스의메서드에접근하기
__서로다른동물이헤엄치거나무리사냥을하도록하려면어떻게해야할까요?
__인터페이스를사용해동일한작업을수행하는클래스다루기
__is로안전하게클래스계층구조탐색하기
__안전한타입변환을위한또하나의키워드:as
__클래스계층구조를오르내리기위해업캐스팅과다운캐스팅사용하기
__CoffeeMaker를Appliance로업캐스팅하기
__Appliance를다시CoffeeMaker로다운캐스팅하기
__인터페이스로도업캐스팅,다운캐스팅하기
__다른인터페이스를상속하는인터페이스
__정적멤버를가지는인터페이스
__인터페이스메서드에본체를추가하는기본구현
__ScareAdults메서드와기본구현추가하기
__WPF컨트롤을자동으로갱신하는데이터바인딩
__데이터바인딩을사용하도록벌집관리시스템수정하기
__다형성은객체가여러형태를가질수있음을의미합니다

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

__문자열은데이터분류에적합하지않습니다
__열거형은유효한값의모음을다룰수있게해줍니다
__열거형으로숫자에이름을붙일수있습니다
__카드한벌을만드는데배열을사용할수있지만요...
__리스트로아무거나모아서쉽게저장하기
__배열보다유연한리스트
__신발장앱만들기
__모든타입을저장할수있는제네릭컬렉션
__컬렉션이니셜라이저는객체이니셜라이저와비슷합니다
__오리리스트를만듭시다
__리스트는쉽지만정렬은까다롭습니다
__IComparable을사용해서리스트안오리정렬하기
__IComparer사용해서정렬방법지시하기
__비교자객체인스턴스만들기
__ToString()메서드를재정의해서객체가스스로를설명하게하기
__Duck과Card가자신의정보를콘솔에출력하도록foreach반복문수정하기
__IEnumerable를사용해리스트전체를업캐스팅하기
__사전을사용해키와값저장하기
__Dictionary클래스기능의개요
__사전을사용해프로그램만들기
__그외의컬렉션타입들...
__큐는선입선출입니다
__스택은후입선출입니다

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

__플레이어가공을클릭했을때점수증가시키기
__게임의두가지모드
__게임모드추가하기
__게임에UI추가하기
__UI에점수를표시하는텍스트구성하기
__게임을시작하는메서드를호출하는버튼추가하기
__PlayAgain버튼과Score텍스트작동시키기
__게임의코드마무리하기
__창의성을발휘하세요!

Chapter09LINQ와람다|데이터통제하기

__지미는캡틴어메이징의광팬입니다
__LINQ를사용해컬렉션쿼리하기
__LINQ는어떤IEnumerable참조로도작동합니다
__LINQ쿼리문법
__LINQ객체다루기
__LINQ쿼리를사용해지미의앱마무리하기
__var키워드로변수타입자동으로추론하기
__LINQ쿼리는결과값에접근하기전까지실행되지않습니다
__group쿼리를사용해시퀀스를여러그룹으로분리하기
__join쿼리를사용해두시퀀스의데이터합치기
__new키워드로익명타입생성하기
__지미의만화컬렉션앱에유닛테스트프로젝트추가하기
__첫유닛테스트작성하기
__GetReviews()메서드의유닛테스트작성하기
__유닛테스트를사용해서경계조건과이상한데이터처리하기
__=>연산자를사용해람다식만들기
__람다시승하기
__람다를사용해Clown리팩터링하기
__람다에서조건문을위한?:연산자사용하기
__람다식과LINQ
__LINQ쿼리는메서드체이닝형태로작성할수있습니다
__=>연산자사용해서switch식만들기
__Enumerable클래스살펴보기
__열거가능한시퀀스직접생성하기
__yieldreturn문을사용해직접시퀀스생성하기
__yieldreturn문을사용해ManualSportSequence리팩터링하기

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

__.NET은스트림을사용해데이터를읽고기록합니다
__서로다른스트림은서로다른대상을읽고씁니다
__FileStream은파일에있는바이트를읽고씁니다
__손쉬운3단계:텍스트를파일에쓰기
__스윈들러의악마적계획
__StreamReader를사용해서파일읽기
__데이터는여러스트림을거쳐이동할수있습니다
__정적File,Directory클래스를사용해파일과디렉터리다루기
__IDisposable을사용해객체확실히닫기
__MemoryStream을사용해메모리에데이터스트림하기
__객체가직렬화될때어떤일이일어나나요?
__객체의상태는정확히무엇이고,어떤것이저장되나요?
__JsonSeriallization을사용해객체직렬화하기
__JSON은특정한C#타입이아닌데이터만포함합니다
__다음화:데이터를깊게파고들어봅시다
__C#문자열은유니코드로인코딩됩니다
__비주얼스튜디오에서유니코드는잘작동합니다
__.NET은글자와텍스트를유니코드로저장합니다
__C#은데이터전송을위해byte배열을사용할수있습니다
__BinaryWriter를사용해이진데이터기록하기
__BinaryReader를사용해데이터다시읽어들이기
__16진수덤프는파일에있는바이트값을확인할수있게해줍니다
__StreamReader를사용해16진수덤프앱만들기
__명령줄인수를사용하도록16진수덤프앱수정하기

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

__새유니티프로젝트생성하고씬뷰구성하기
__카메라구성하기
__플레이어게임오브젝트생성하기
__유니티의내비게이션시스템을소개합니다
__내비메시설정하기
__플레이어가자동으로플레이영역이동하게만들기

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

__객체의삶과죽음
__가비지컬렉션클래스를사용해가비지컬렉션강제하기
__무언가를할마지막기회,종료자
__종료자는정확히언제실행되나요?
__종료자는다른객체에의존할수없습니다
__구조체는객체처럼보이지만...
__값은복제되고,참조는할당됩니다
__구조체는값타입,객체는참조타입입니다
__스택vs힙:메모리에대해서
__out매개변수를사용해한개이상값을반환하는메서드만들기
__ref한정자를사용해참조로전달하기
__선택적매개변수로기본값설정하기
__null참조는어떤객체도참조하지않습니다
__null을허용하지않는참조타입은NRE를방지해줍니다
__null병합연산자??로null값다루기
__null을허용하며안전하게처리할수있는nullable값타입
__예전같지않은‘캡틴’어메이징
__기존클래스에새로운작동을추가하는확장메서드
__string기본타입확장하기

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

__16진수덤프앱은명령줄에서파일명을읽어들입니다
__예외가발생하면CLR이예외객체를생성합니다
__모든예외객체는System.Exception을상속합니다
__덤프할수없는파일도있습니다
__위험한메서드를호출하면어떤일이벌어지나요?
__try/catch문으로예외처리하기
__디버거로try/catch흐름추적하기
__항상실행해야할코드가있으면,finally블록을사용하세요
__System.Exception을처리하는catch-all예외
__상황에맞는예외를사용하세요
__정확한예외처리기를만드는데도움을주는예외필터
__최악의catch블록:catch-all과주석
__임시방편도괜찮아요

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

__작업하던유니티프로젝트를이어서진행해봅시다
__씬뷰에플랫폼추가하기
__베이크옵션을사용해Platform을걸을수있는오브젝트로만들기
__내비메시에계단과경사로포함시키기
__내비메시의높이문제를고쳐봅시다
__내비메시장애물추가하기
__장애물을위아래로이동시키는스크립트추가하기
__창의성을발휘하세요!

AppendixⅠASP.NETCoreBlazor프로젝트|VisualStudioforMac학습자가이드

__왜C#을배워야하나요?
__VisualStudioforMac에서첫프로젝트만들기
__C#으로게임만들기
__비주얼스튜디오에서BlazorWebAssembly앱생성하기
__브라우저에서Blazor웹앱실행하기
__이제코드를작성할준비가됐습니다
__이모지리스트를생성하고앱에표시하기
__동물이모지의순서섞기
__디버거에서게임실행하기
__새프로젝트를소스제어시스템에추가하기
__마우스클릭이벤트작성하기
__마우스클릭에반응하는버튼만들기
__이벤트처리기테스트하기
__디버거로예외추적하기
__오류를추적해봅시다
__승리하면게임을초기화하는코드추가하기
__게임에타이머기능추가하기
__내비게이션메뉴정리하기
__UI의역학을좌우하는컨트롤
__새BlazorWebAssembly앱프로젝트생성하기
__슬라이더컨트롤이있는페이지만들기
__텍스트입력추가하기
__색상선택기와날짜선택기추가하기
__Blazor로카드뽑기앱만들기
__행과열로구성된페이지
__슬라이더는데이터바인딩을사용해변수를갱신합니다
__슬로피조의싸구려샌드위치가게에오신것을환영합니다!

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

찾아보기

출판사 서평

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

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

C#과유니티를사용한게임프로젝트에관심이있습니까?
무미건조한글공부보다는직접실습해보는쪽을선호합니까?
기술만을강조하는지루한강의보다는즐겁게대화를나누며C#을배우고싶습니까?

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

예제파일다운로드
→hanbit.co.kr/src/11160
→github.com/head-first-csharp/fourth-edition