제1부 시작하기 제1장 C의 소개 .NET Framework이란 ... 21 .NET Framework에 포함된 것들 ... 22 .NET Framework으로 응용 프로그램을 작성하려면 ... 23 C이란 무엇인가 ... 27 C으로 작성할 수 있는 응용 프로그램 종류들 ... 28 이 책의 C ... 29 Visual Studio.NET ... 29 VS 솔루션 ... 30 요약 ... 31 제2장 C 프로그램 만들기 Visual Studio.NET 개발 환경 ... 34 콘솔 응용 프로그램 ... 35 Windows Forms 응용 프로그램 ... 42 요약 ... 46 제2부 C 언어의 기초 제3장 변수와 표현식 C의 기본적인 구문 ... 48 기본적인 C 콘솔 응용 프로그램의 구조 ... 50 변수들 ... 52 단순 형식들 ... 53 변수 명명 규칙 ... 57 리터럴 값들 ... 60 변수의 선언과 배정 ... 62 표현식 ... 63 산술 연산자들 ... 64 배정 연산자들 ... 69 연산자 우선 순위 ... 70 네임스페이스 ... 71 요약 ... 75 연습 문제 ... 75 제4장 흐름 제어 부울 논리 ... 77 비트 단위 연산자들 ... 80 부울 배정 연산자들 ... 84 전체적인 연산자 우선 순위 ... 86 goto 문 ... 87 분기 ... 89 3항 연산자 ... 89 if 문 ... 90 switch 문 ... 94 루프 ... 99 do 루프 ... 99 while 루프 ... 102 for 루프 ... 105 루프의 흐름 제어 ... 111 무한 루프 ... 112 요약 ... 113 연습 문제 ... 113 제5장 변수에 대해 좀더 자세히 형식 변환 ... 116 복잡한 변수 형식 ... 125 열거형 ... 125 구조체 ... 131 배열 ... 135 문자열 조작 ... 144 요약 ... 150 연습 문제 ... 150 제6장 함수 함수의 정의와 사용 ... 155 반환값 ... 157 매개 변수 ... 159 변수 범위 ... 168 다른 구조에서의 변수 범위 ... 172 매개변수 및 반환값 대 전역 데이터 ... 175 Main() 함수 ... 177 구조체 함수 ... 179 함수 오버로딩 ... 181 대리자 ... 183 요약 ... 187 연습 문제 ... 187 제7장 디버깅과 오류 처리 Visual Studio에서의 디버깅 ... 190 비 중단 모드(정상 모드)에서의 디버깅 ... 190 중단 모드에서의 디버깅 ... 198 오류 처리 ... 210 예외 ... 210 요약 ... 219 연습 문제 ... 220 제3부 개체 지향적 프로그래밍 제8장 개체 지향적 프로그래밍 입문 개체 지향적 프로그래밍이란 ... 222 개체란 무엇인가? ... 223 모든 것은 개체 ... 227 개체의 수명주기 ... 227 정적 및 인스턴스 클래스 멤버 ... 229 OOP 기법들 ... 230 인터페이스 ... 230 상속 ... 232 다형성 ... 235 개체들 사이의 관계 ... 237 연산자 오버로딩 ... 239 이벤트 ... 240 참조 대 값 형식 ... 241 윈도우즈 응용 프로그램에서의 OOP ... 241 요약 ... 245 연습 문제 ... 246 제9장 클래스의 정의 C에서의 클래스 정의 ... 248 인터페이스 정의 ... 251 System.Object ... 255 생성자와 소멸자 ... 256 생성자의 호출 순서 ... 258 Visual Studio.NET의 OOP 도구들 ... 262 클래스 뷰 창 ... 262 개체 브라우저 ... 265 클래스의 추가 ... 266 클래스 라이브러리 프로젝트 ... 267 인터페이스 대 추상 클래스 ... 272 구조체와 클래스 ... 274 얕은 복사 대 깊은 복사 ... 276 요약 ... 277 연습 문제 ... 278 제10장 클래스 멤버의 정의 멤버 정의 ... 279 VS 멤버 추가 마법사 ... 288 멤버 속성들 ... 292 추가적인 클래스 멤버 주제들 ... 293 기반 클래스 메서드 숨기기 ... 293 재정의된 또는 숨겨진 기반 클래스 메서드의 호출 ... 295 중첩된 형식 정의 ... 297 인터페이스 구현 ... 298 클래스에서 인터페이스를 구현 ... 299 예제 응용 프로그램 ... 302 응용 프로그램의 설계 ... 302 클래스 라이브러리의 작성 ... 303 클래스 라이브러리를 사용하는 클라이언트 응용 프로그램 ... 308 요약 ... 310 연습 문제 ... 311 제11장 클래스 고급 주제 컬렉션 ... 313 컬렉션의 사용 ... 314 컬렉션의 정의 ... 322 연산자 오버로딩 ... 334 변환 연산자 ... 340 CardLib 업그레이드 2부 ... 342 고급 변환 ... 348 박싱과 언박싱 ... 348 is 연산자 ... 350 as 연산자 ... 354 깊은 복사 ... 355 CardLib 업그레이드 3부 ... 358 사용자 정의 예외 ... 360 CardLib 업그레이드 4부 ... 361 요약 ... 363 연습 문제 ... 363 제12장 이벤트 이벤트란 무엇인가 ... 365 이벤트의 사용 ... 367 이벤트의 처리 ... 367 이벤트의 정의 ... 370 CardLib의 확장과 사용 ... 381 CardLib를 위한 카드 게임 클라이언트 ... 382 요약 ... 391 연습 문제 ... 391 제4부 Windows Forms 다루기 제13장 Windows Form 컨트롤 Windows 폼 디자이너 ... 394 도구 상자 ... 396 컨트롤 ... 397 속성 ... 397 Anchor와 Dock 속성 ... 399 이벤트 ... 399 Button 컨트롤 ... 401 Button의 속성들 ... 401 Button의 이벤트들 ... 402 Label과 LinkLabel 컨트롤 ... 404 TextBox 컨트롤 ... 406 TextBox의 속성들 ... 406 TextBox 이벤트들 ... 407 RadioButton과 CheckBox 컨트롤 ... 418 RadioButton의 속성들 ... 419 RadioButton의 이벤트들 ... 419 CheckBox의 속성들 ... 420 CheckBox의 이벤트들 ... 420 GroupBox 컨트롤 ... 421 RichTextBox 컨트롤 ... 425 RichTextBox의 속성들 ... 426 RichTextBox의 이벤트들 ... 427 ListBox와 CheckedListBox 컨트롤 ... 435 ListBox의 속성들 ... 435 ListBox의 메서드들 ... 437 ListBox의 이벤트들 ... 437 ComboBox 컨트롤 ... 440 ComboBox의 속성들 ... 440 ComboBox의 이벤트들 ... 441 ListView 컨트롤 ... 447 ListView의 속성들 ... 448 ListView의 메서드들 ... 450 ListView의 이벤트들 ... 451 ListViewItem ... 451 ColumnHeader ... 451 ImageList 컨트롤 ... 451 StatusBar 컨트롤 ... 460 StatusBar의 속성들 ... 461 StatusBar의 이벤트들 ... 461 StatusBarPanel 클래스 ... 461 StatusBar 예제 ... 462 TabControl 컨트롤 ... 464 TabControl의 속성들 ... 465 TabControl 다루기 ... 465 요약 ... 468 제14장 고급 Windows 폼 기능들 메뉴 ... 469 메뉴 컨트롤의 사용 ... 470 MenuItem 컨트롤 ... 471 MenuItem의 이벤트들 ... 472 ContextMenu 컨트롤 ... 473 ToolBar 컨트롤 ... 479 ToolBar의 속성들 ... 480 ToolBar의 이벤트들 ... 481 ToolBarButton의 속성들 ... 481 SDI와 MDI 응용 프로그램 ... 487 MDI 응용 프로그램의 작성 ... 490 컨트롤 제작 ... 503 사용자 정의 컨트롤의 디버깅 ... 510 LabelTextBox 컨트롤의 확장 ... 511 요약 ... 516 연습 문제 ... 516 제15장 대화상자의 사용 대화상자 ... 517 대화상자 사용법 ... 519 파일 대화상자들 ... 520 OpenFileDialog ... 521 SaveFileDialog ... 536 인쇄 ... 543 인쇄 기능의 구조 ... 543 여러 페이지 인쇄 ... 550 페이지 설정 ... 553 인쇄 대화상자 ... 556 인쇄 미리보기 ... 561 PrintPreviewDialog ... 561 PrintPreviewControl ... 562 FontDialog와 ColorDialog ... 563 FontDialog ... 564 ColorDialog ... 566 요약 ... 567 연습 문제 ... 568 제16장 GDI+ 입문 그래픽 드로잉의 개요 ... 570 Graphics 클래스 ... 570 개체의 해제 ... 571 좌표계 ... 573 색 ... 580 Pen 클래스를 이용한 선 그리기 ... 581 Brush 클래스를 이용한 도현 그리기 ... 583 Font 클래스를 이용한 텍스트 출력 ... 587 이미지를 이용한 그리기 ... 591 TextureBrush로 그리기 ... 594 Pen으로 이미지 그리기 ... 597 이미지로 텍스트 그리기 ... 598 더블 버퍼링 ... 599 GDI+의 고급 기능들 ... 602 클리핑 ... 602 인쇄 ... 604 인쇄 미리 보기 ... 604 SyStem.Drawing.Drawing2D ... 605 System.Drawing.Imaging ... 606 요약 ... 606 제17장 Windows 응용 프로그램의 설치 및 배포 설치 및 배포란 ... 610 설치 및 배포 프로젝트 ... 611 Windows Installer의 구조 ... 612 Windows Installer의 용어들 ... 612 Windows Installer의 장점 ... 614 Simple Editor를 위한 설치 패키지 만들기 ... 615 설치에 대한 계획 ... 615 프로젝트 작성 ... 616 프로젝트 속성 ... 616 설치 편집기들 ... 620 파일 시스템 편집기 ... 620 파일 형식 편집기 ... 625 시작 조건 편집기 ... 626 사용자 인터페이스 편집기 ... 628 프로젝트의 빌드 ... 632 설치 ... 632 환영 ... 633 추가 정보 ... 634 사용권 계약 ... 634 Optional Files ... 635 설치 폴더 선택 ... 636 설치 확인 ... 637 진행률 ... 637 설치 완료 ... 638 응용 프로그램의 실행 ... 638 자동 복구 ... 639 제거 ... 640 요약 ... 640 제5부 .NET Framework 상에서의 프로그래밍 제18장 데이터 액세스 기초 VS에서의 데이터 액세스 ... 644 데이터 액세스의 매우 간략한 역사 ... 644 ADO.NET의 소개 ... 645 VS에서 데이터 보기 ... 647 데이터베이스에 연결 ... 647 데이터베이스 테이블과 관계 ... 651 응용 프로그램에서 데이터베이스에 접근 ... 655 데이터 어댑터 구성 마법사 ... 656 추가적인 정보 표시 ... 663 DataSet 탐색 ... 664 목록 상자 추가 ... 666 Datagrid 추가 ... 668 Datagrid의 포매팅 ... 669 데이터베이스 갱신 ... 670 XML ... 671 XML 문서 ... 672 XML 네임스페이스 ... 676 적격 XML과 유효한 XML ... 677 XML 문서의 유효성 ... 678 C의 XML 자동 문서화 ... 684 요약 ... 688 연습 문제 ... 689 제19장 ADO.NET을 이용한 데이터 액세스 ADO.NET이란 ... 691 ADO.NET이라는 이름 ... 692 ADO.NET의 설계 목표 ... 692 ADO.NET 클래스 및 개체의 개요 ... 693 공급자 개체들 ... 694 소비자 개체들 ... 695 System.Data 네임스페이스의 사용 ... 696 DataSet에 여러 테이블들을 넣기 ... 720 XML과 ADO.NET ... 728 ADO.NET DataSet의 XML 지원 ... 728 ADO.NET의 SQL 지원 ... 731 DataAdapter의 SQL 명령 ... 732 SQL 명령을 직접 실행하려면 ... 735 ADO.NET에 대해 더 알고 싶다면 ... 738 요약 ... 738 연습 문제 ... 739 제20장 파일 다루기 스트림 ... 742 입력과 출력을 위한 클래스들 ... 742 File과 Directory 클래스 ... 744 FileInfo 클래스 ... 745 DirectoryInfo 클래스 ... 746 FileStream 개체 ... 746 StreamWriter 개체 ... 755 StreamReader 개체 ... 758 고급 주제들 ... 764 파일 시스템의 감시 ... 764 비동기적 파일 액세스 ... 771 요약 ... 778 연습 문제 ... 779 제21장 .NET 어셈블리 어셈블리 소개 ... 781 구성요소 ... 781 구성요소의 이점 ... 782 구성요소의 간략한 역사 ... 783 자기 서술적 특징 ... 784 어셈블리의 구조 ... 786 어셈블리 작성 ... 788 어셈블리의 내용 보기 ... 791 매니페스트 ... 795 어셈블리 특성들 ... 798 어셈블리의 호출 ... 803 전용 및 공유 어셈블리 ... 806 전용 어셈블리 ... 807 공유 어셈블리 ... 807 어셈블리 검색 ... 811 요약 ... 812 연습 문제 ... 813 제22장 어트리뷰트(attribute) 어트리뷰트란 ... 816 리플렉션 ... 820 내장 어트리뷰트들 ... 824 사용자 정의 어트리뷰트 ... 838 TestCaseAttribute ... 839 System.AttriubuteUsageAttribute ... 844 요약 ... 870 제6부 C과 웹 제23장 웹 프로그래밍의 기초 서문 ... 871 인터넷의 간략한 역사 ... 871 월드 와이드 웹 ... 872 웹의 작동 방식 ... 873 HTTP - HyperText Transfer Protocol ... 874 웹 프로그래밍의 기초 ... 877 HTML ... 877 HTML 폼 ... 881 정적 페이지 대 동적 페이지 ... 886 웹의 진화 ... 892 .NET 웹 프로그래밍 ... 893 ASP.NET ... 894 WebForms ... 894 요약 ... 895 제24장 ASP.NET 응용 프로그램 웹로그 작성 ... 899 응용 프로그램의 기초 ... 899 동적인 요소의 추가 ... 902 웹로그 항목들 ... 908 웹로그 항목의 저장 ... 909 웹로그 항목의 표시 ... 912 날짜 표시 ... 919 페이지 꾸미기 ... 922 항목들의 목록 표시 ... 928 새 웹로그 항목의 생성 ... 938 웹로그 항목의 수정 ... 946 항목들의 정렬 ... 951 사용자 세션과 쿠키 ... 954 웹 사이트에 대한 접근 제한 ... 955 요약 ... 959 연습 문제 ... 960 제25장 웹 서비스 웹 서비스 이전의 기술들 ... 962 원격 프로시저 호출(RPC) ... 962 SOAP ... 964 웹 서비스의 용도 ... 964 호텔 여행사 응용 프로그램 시나리오 ... 966 도서 배급 응용 프로그램 시나리오 ... 966 클라이언트 응용 프로그램의 종류 ... 966 응용 프로그램 기반 구조 ... 966 웹 서비스 기반 구조 ... 967 웹 서비스를 위한 검색 엔진 ... 969 웹 서비스 디스커버리 ... 970 메서드 정보 ... 972 메서드 호출 ... 973 웹 서비스와 .NET Framework ... 975 웹 서비스 만들기 ... 975 클라이언트 ... 977 간단한 ASP.NET 웹 서비스 작성 ... 978 생성된 파일들 ... 979 웹 메서드의 추가 ... 980 웹 서비스 테스트 ... 981 윈도우즈 클라이언트의 구현 ... 983 ASP.NET 클라이언트 작성 ... 987 요약 ... 989 제7부 사례 연구 사례 연구 1. 웹 사이트 설문 웹 사이트 설문 ... 991 버전 1. ... 992 요구 사항 ... 992 개체 모델 설계(업무 로직 계층) ... 993 테스트 ... 1000 데이터 구조(데이터 계층) ... 1003 개체의 구현 ... 1004 사용자 인터페이스(표현 계층) ... 1014 버전 1의 평가 ... 1023 버전 2. ... 1025 추가적인 요구사항들 ... 1025 설문 결과 도구 ... 1025 1인당 1표 ... 1041 설문 컨트롤 ... 1044 설문 응용 프로그램의 3 계층 구조 ... 1048 요약 ... 1049 사례 연구 2. 온라인 뉴스레터 관리자 NewsMailer ... 1051 응용 프로그램의 개요 ... 1051 응용 프로그램의 설계 ... 1053 데이터와 업무 개체들 ... 1053 데이터베이스 설계 ... 1054 데이터베이스 액세스를 위한 업무 클래스들 ... 1058 구성 데이터 관리 ... 1063 관리용 사용자 인터페이스 ... 1069 사용자 정의 컨트롤의 작성 ... 1071 리스트 관리 페이지 ... 1073 구독자 관리 ... 1085 구독자에게 이메일 전송 ... 1090 Utilities 클래스 ... 1096 뉴스 저장소의 관리 ... 1097 설정 변경 페이지 ... 1101 레이아웃 변경 ... 1104 사용자를 위한 구독 신청 폼 ... 1106 메일링 리스트 구독과 해지 ... 1109 응용 프로그램의 보안 ... 1114 어셈블리의 컴파일 ... 1118 응용 프로그램의 실행 ... 1119 브라우저 호환성 문제 ... 1119 요약 ... 1120 Sample C을 이용한 온라인 쇼핑 카트 구축 부록 A. PATH 환경 변수의 설정 Windows 2000/XP ... 1143 Windows NT ... 1145 Windows 95/98/ME ... 1146 부록 B. MSDE의 설치 부록 C. C 컴파일 옵션들 Index ... 1162