1. 컴퓨터, 인터넷 그리고 비주얼 베이직 .NET에 대한 소개 ... 1 1.1 소개 ... 2 1.2 컴퓨터란 무엇인가? ... 3 1.3 컴퓨터 구성 ... 3 1.4 운영체제의 발전 ... 4 1.5 개인용 컴퓨터 이용, 분산 컴퓨터 이용 그리고 클라이언트/서버 컴퓨터 이용 ... 5 1.6 기계어, 어셈블리어 그리고 고급 언어 ... 6 1.7 비주얼 베이직 .NET ... 7 1.8 C, C++, Java™ 그리고 C ... 8 1.9 다른 고급 언어들 ... 10 1.10 구조화된 프로그래밍 ... 10 1.11 핵심 소프트웨어 경향 : 객체 기술 ... 11 1.12 하드웨어 경향 ... 13 1.13 인터넷과 월드와이드웹의 역사 ... 14 1.14 월드와이드웹 컨소시엄(W3C) ... 15 1.15 XML ... 16 1.16 마이크로소프트 .NET에 대한 소개 ... 17 1.17 .NET 프레임워크와 공용 언어 런타임 ... 19 1.18 각 장의 개요 ... 21 1.19 인터넷과 월드와이드웹 자원 ... 30 2. 비주얼 스튜디오 .NET IDE에 대한 소개 ... 35 2.1 소개 ... 36 2.2 비주얼 베이직 스튜디오 .NET IDE의 개요 ... 36 2.3 메뉴 바와 툴 바 ... 40 2.4 비주얼 스튜디오 IDE 윈도우 ... 41 2.4.1 솔루션 익스플로러 ... 43 2.4.2 툴박스 ... 43 2.4.3 프로퍼티 윈도우 ... 45 2.5 도움말 이용하기 ... 46 2.6 간단한 프로그램 : 본문과 이미지 나타내기 ... 47 2.7 인터넷과 월드와이드웹 자원 ... 57 3. 비주얼 베이직 프로그래밍에 대한 소개 ... 64 3.1 소개 ... 65 3.2 간단한 프로그램 : 한 라인의 텍스트 출력하기 ... 65 3.3 간단한 예제 하나 : 정수 추가하기 ... 73 3.4 메모리 개념 ... 77 3.5 산술 ... 78 3.6 의사 결정 : 대등 연산자와 관계 연산자 ... 82 3.7 메시지를 나타내기 위해 다이얼로그 이용하기 ... 86 3.8 인터넷과 월드와이드웹 자원 ... 92 4. 제어 구조 : 파트 1 ... 101 4.1 소개 ... 102 4.2 알고리즘 ... 102 4.3 의사코드 ... 103 4.4 제어 구조 ... 103 4.5 If/Then 조건 구조 ... 107 4.6 If/Then/Else 선택 구조 ... 109 4.7 While 반복 구조 ... 111 4.8 Do While/Loop 반복 구조 ... 113 4.9 Do Until/Loop 반복 구조 ... 114 4.10 할당 연산자 ... 115 4.11 알고리즘 공식화 : 사례 연구 1(카운터 제어를 통한 반복) ... 117 4.12 하향식, 단계적 상세화에 의한 알고리즘 공식화 : 사례 연구 2(센티널 제어를 통한 반복) ... 120 4.13 하향식, 단계적 상세화에 의한 알고리즘 공식화 : 사례 연구 3(중첩 제어 구조) ... 125 4.14 하향식, 단계적 상세화에 의한 알고리즘 공식화 : 사례 연구 4(중첩 반복 구조) ... 130 4.15 윈도우 애플리케이션 프로그래밍의 소개 ... 133 5. 제어 구조 : 파트 2 ... 150 5.1 소개 ... 151 5.2 카운터 제어 반복의 필수 사항 ... 151 5.3 For/Next 반복 구조 ... 152 5.4 For/Next 구조를 사용한 예제 ... 155 5.5 Select Case 다중 선택 구조 ... 161 5.6 Do/Loop While 반복 구조 ... 166 5.7 Do/Loop Until 반복 구조 ... 167 5.8 반복 구조에서 키워드 Exit 사용 ... 169 5.9 논리 연산자 ... 171 5.10 구조화 프로그래밍에 대한 정리 ... 177 6. 프로시저 ... 190 6.1 소개 ... 191 6.2 모듈, 클래스 및 프로시저 ... 191 6.3 Sub 프로시저 ... 193 6.4 Function 프로시저 ... 196 6.5 메소드 ... 198 6.6 아규먼트 변환 ... 203 6.7 Option Strict 및 데이터 타입의 변환 ... 205 6.8 값 유형 및 참조 타입 ... 206 6.9 아규먼트 전달 : 값에 의한 전달 대 참조에 의한 전달 ... 208 6.10 식별자 기간 ... 211 6.11 범위 규칙 ... 212 6.12 난수 생성 ... 215 6.13 예제 : 운수 게임 ... 222 6.14 재귀 ... 227 6.15 재귀를 사용하는 예제 : 피보나치수열 ... 230 6.16 재귀 대 반복 ... 234 6.17 프로시저 오버로드 및 Optional 아규먼트 ... 234 6.17.1 프로시저 오버로딩 ... 235 6.17.2 Optional 아규먼트 ... 237 6.18 모듈 ... 240 7. 배열 ... 255 7.1 소개 ... 256 7.2 배열 ... 256 7.3 배열 선언과 할당 ... 258 7.4 배열을 사용하는 예 ... 260 7.4.1 배열 할당 ... 260 7.4.2 배열 값 초기화 ... 261 7.4.3 배열 요소 합 ... 263 7.4.4 조사 결과를 분석하는 데 배열 사용 ... 264 7.4.5 배열 데이터를 시각적으로 표시하기 위해 히스토그램 사용 ... 266 7.5 프로시저에 배열 전달 ... 270 7.6 배열 전달 : ByVal 대 ByRef ... 274 7.7 배열 정렬 ... 278 7.8 배열 검색 : 선형 검색과 2진 검색 ... 282 7.8.1 선형 검색으로 배열 검색 ... 283 7.8.2 2진 검색으로 정렬된 배열 ... 285 7.9 다차원 사각과 톱니 모양 배열 ... 290 7.10 가변 길이 파라미터 리스트 ... 297 7.11 For Each/Next 반복 구조 ... 299 8. 객체 기반 프로그래밍 ... 307 8.1 소개 ... 308 8.2 클래스로 시간을 추상화하는 데이터 타입 구현 ... 309 8.3 클래스 범위 ... 317 8.4 멤버에 대한 액세스 제어 ... 318 8.5 클래스 객체의 초기화 : 생성자 ... 319 8.6 오버로드된 생성자의 사용 ... 320 8.7 프로퍼티 ... 326 8.8 컴포지션 : 다른 클래스의 인스턴스 변수로 사용되는 객체 ... 333 8.9 Me 참조 사용 ... 336 8.10 가비지 컬렉션 ... 339 8.11 공유 클래스 멤버 ... 339 8.12 Const와 ReadOnly 멤버 ... 344 8.13 데이터 추상화와 정보 감추기 ... 347 8.14 소프트웨어 재사용 가능성 ... 348 8.15 네임스페이스와 어셈블리 ... 349 8.16 클래스 뷰와 객체 브라우저 ... 354 9. 객체 지향 프로그래밍 : 상속 ... 363 9.1 소개 ... 364 9.2 기본 클래스와 파생 클래스 ... 365 9.3 Protected와 Friend 멤버 ... 368 9.4 기본 클래스와 파생 클래스 사이의 관계 ... 369 9.5 사례 연구 : 3단계 상속 계층 구조 ... 387 9.6 파생 클래스의 생성자와 소멸자 ... 391 9.7 상속과 소프트웨어 공학 ... 397 10. 객체 지향 프로그래밍 : 다형성 ... 403 10.1 소개 ... 404 10.2 파생 클래스 객체를 기본 클래스 객체로 변환 ... 404 10.3 타입 필드와 Select Case 구문 ... 411 10.4 다형성 예제 ... 412 10.5 추상 클래스와 메소드 ... 413 10.6 사례 연구 : 인터페이스 상속과 구현 ... 415 10.7 NotInheritable 클래스와 NotOverridable 메소드 ... 424 10.8 사례 연구 : 다형성을 이용한 급여 계산 시스템 ... 424 10.9 사례 연구 : 인터페이스의 구축과 사용 ... 435 10.10 델리게이트 ... 448 11. 예외 처리 ... 457 11.1 소개 ... 458 11.2 예외 처리 개요 ... 459 11.3 예제 : DivideByZeroException ... 462 11.4 .NET Exception 계층 ... 467 11.5 Finally 블록 ... 468 11.6 Exception 프로퍼티 ... 476 11.7 프로그래머-정의 예외 클래스 ... 481 11.8 오버플로 처리 ... 485 12. 그래픽 사용자 인터페이스의 개념 : 파트 1 ... 492 12.1 소개 ... 493 12.2 윈도우 폼 ... 495 12.3 이벤트 처리 모델 ... 497 12.4 컨트롤 프로퍼티와 레이아웃 ... 505 12.5 레이블, 텍스트 박스와 버튼 ... 509 12.6 그룹 박스와 패널 ... 512 12.7 체크 박스와 라디오 버튼 ... 516 12.8 픽처 박스 ... 526 12.9 마우스 이벤트 처리 ... 528 12.10 키보드 이벤트 처리 ... 531 13. 그래픽 사용자 인터페이스의 개념 : 파트 2 ... 541 13.1 소개 ... 542 13.2 메뉴 ... 542 13.3 링크 레이블 ... 552 13.4 ListBox와 CheckedListBox ... 556 13.4.1 ListBox ... 559 13.4.2 CheckedListBox ... 561 13.5 ComboBox ... 564 13.6 TreeViews ... 569 13.7 ListViews ... 574 13.8 Tab 컨트롤 ... 581 13.9 다중 문서 인터페이스 윈도우 ... 586 13.10 비주얼 상속 ... 596 13.11 사용자 정의 컨트롤 ... 600 14. 멀티스레딩 ... 613 14.1 소개 ... 614 14.2 스레드 상태 : 스레드의 라이프 사이클 ... 616 14.3 스레드 우선순위와 스레드 스케줄링 ... 617 14.4 스레드 동기화와 클래스 Monitor ... 622 14.5 스레드 동기화가 없는 생산자/소비자 관계 ... 625 14.6 스레드 동기화가 있는 생산자/소비자 관계 ... 631 14.7 생산자/소비자 관계 : 순환 버퍼 ... 640 15. 문자열, 문자, 정규 표현식 ... 656 15.1 소개 ... 657 15.2 문자와 문자열의 기본 ... 657 15.3 String 생성자 ... 658 15.4 String Length와 Chars 프로퍼티, Copyto 메소드 ... 660 15.5 문자열 비교 ... 661 15.6 String 메소드 GetHashCode ... 666 15.7 문자열에서 문자와 서브 문자열 찾기 ... 667 15.8 문자열에서 서브 문자열 추출하기 ... 670 15.9 문자열 연결 ... 671 15.10 그 외의 문자열 메소드 ... 672 15.11 클래스 StringBuilder ... 674 15.12 StringBuilder Indexer, Lenght, Capacity 프로퍼티와 Ensure Capacity 메소드 ... 675 15.13 StringBuilder Append와 AppendFormat 메소드 ... 677 15.14 StringBuilder Insert, Remove, Replace 메소드 ... 681 15.15 Char 메소드 ... 684 15.16 카드 섞기와 딜링 시뮬레이션 ... 686 15.17 정규 표현식과 Regex 클래스 ... 690 16. 그래픽과 멀티미디어 ... 706 16.1 소개 ... 707 16.2 그래픽 컨텍스트와 그래픽 객체 ... 709 16.3 색상 제어 ... 710 16.4 폰트 제어 ... 717 16.5 선, 사각형, 타원형 그리기 ... 723 16.6 호 그리기 ... 725 16.7 다각형 및 다선 그리기 ... 728 16.8 고급 그래픽 기능 ... 732 16.9 멀티미디어 소개 ... 737 16.10 이미지 로딩, 디스플레이, 스케일링 ... 738 16.11 이미지 애니메이팅 ... 740 16.12 윈도우 미디어 플레이어 ... 752 16.13 마이크로소프트 에이전트 ... 754 17. 파일과 스트림 ... 775 17.1 소개 ... 776 17.2 데이터 계층 ... 776 17.3 파일과 스트림 ... 778 17.4 File과 Directory 클래스 ... 780 17.5 순차 접근 파일 만들기 ... 790 17.6 순차 접근 파일에서 데이터 읽기 ... 801 17.7 임의 접근 파일 ... 812 17.8 임의 접근 파일 생성 ... 816 17.9 임의 접근 파일에 임의로 데이터 쓰기 ... 820 17.10 임의 접근 파일에서 순차적으로 데이터 읽기 ... 824 17.11 사례 연구 : 트랜잭션-프로세싱 프로그램 ... 829 18. 확장 마크업 언어(XML) ... 855 18.1 소개 ... 856 18.2 XML 문서 ... 856 18.3 XML 네임스페이스 ... 861 18.4 문서 객체 모델(DOM) ... 864 18.5 문서 타입 정의(DTD), 스키마와 인증 ... 882 18.5.1 문서 타입 정의 ... 882 18.5.2 Microsoft XML 스키마 ... 887 18.6 확장 가능 스타일 시트 언어와 XslTransform ... 892 18.7 Microsoft BizTalk™ ... 899 18.8 인터넷과 월드와이드웹 자원 ... 901 19. 데이터베이스, SQL과 ADO .NET ... 909 19.1 소개 ... 910 19.2 관계형 데이터베이스 모델 ... 910 19.3 관계형 데이터베이스 개요 : Books 데이터베이스 ... 912 19.4 구조적 쿼리 언어(SQL) ... 919 19.4.1 기본 SELECT 쿼리 ... 919 19.4.2 WHERE 절 ... 920 19.4.3 ORDER BY 절 ... 923 19.4.4 여러 테이블의 데이터 병합하기 : INNER JOIN ... 926 19.4.5 Authors, AuthorISBN, Titles, Publishers 테이블의 데이터 결합하기 ... 929 19.4.6 INSERT 문 ... 932 19.4.7 UPDATE 문 ... 933 19.4.8 DELETE 문 ... 934 19.5 ADO .NET 객체 모델 ... 935 19.6 ADO .NET으로 프로그래밍하기 : DBMS에서 정보 추출하기 ... 936 19.6.1 액세스 데이터 소스에 접근하고 쿼리하기 ... 936 19.6.2 Books 데이터베이스 쿼리 ... 943 19.7 ADO .NET으로 프로그래밍하기 : DBMS 수정하기 ... 946 19.8 XML 파일 읽기와 쓰기 ... 954 20. ASP .NET과 웹 폼 및 웹 컨트롤 ... 963 20.1 소개 ... 964 20.2 간단한 HTTP 트랜잭션 ... 965 20.3 시스템 아키텍처 ... 967 20.4 간단한 웹 폼 예제 생성과 실행 ... 968 20.5 웹 컨트롤 ... 981 20.5.1 텍스트와 그래픽 컨트롤 ... 981 20.5.2 AdRotator 컨트롤 ... 986 20.5.3 유효검사 컨트롤 ... 992 20.6 세션 트래킹 ... 1002 20.6.1 쿠키 ... 1003 20.6.2 HttpSessionState를 사용한 세션 트래킹 ... 1012 20.7 사례 연구 : 온라인 방명록 ... 1021 20.8 사례 연구 : ASP .NET의 데이터베이스 연결 ... 1028 20.9 트레이싱 ... 1042 20.10 인터넷과 월드와이드웹 자원 ... 1044 21. ASP .NET과 웹 서비스 ... 1054 21.1 소개 ... 1055 21.2 웹 서비스 ... 1056 21.3 SOAP와 웹 서비스 ... 1060 21.4 웹 서비스 출판과 소비 ... 1062 21.5 웹 서비스에서의 세션 트래킹 ... 1078 21.6 웹 폼과 웹 서비스 사용 ... 1091 21.7 사례 연구 : 온도 정보 애플리케이션 ... 1098 21.8 웹 서비스에서의 사용자 정의 타입 ... 1107 21.9 인터넷과 월드와이드웹 자원 ... 1116 22. 네트워킹 : 스트림 기반 소켓과 데이터그램 ... 1122 22.1 소개 ... 1123 22.2 간단한 서버 구축(스트림 소켓 사용) ... 1124 22.3 간단한 클라이언트 구축(스트림 소켓 사용) ... 1126 22.4 스트림 소켓 연결을 통한 클라이언트/서버 상호작용 ... 1127 22.5 데이터그램을 통한 connectionless 클라이언트/서버 상호작용 ... 1136 22.6 멀티스레드 서버를 사용한 클라이언트/서버 Tic-Tac-Toc ... 1142 23. 데이터 구조와 컬렉션 ... 1163 23.1 소개 ... 1164 23.2 자기 참조 클래스 ... 1164 23.3 링크 리스트 ... 1166 23.4 스택 ... 1179 23.5 큐 ... 1184 23.6 트리 ... 1188 23.6.1 정수 값으로 구성된 2진 검색 트리 ... 1189 23.6.2 IComparable 객체로 구성된 2진 검색 트리 ... 1197 23.7 컬렉션 클래스 ... 1204 23.7.1 Array 클래스 ... 1205 23.7.2 ArrayList 클래스 ... 1208 23.7.3 스택 클래스 ... 1214 23.7.4 Hashtable 클래스 ... 1218 24. 접근성 ... 1232 24.1 소개 ... 1233 24.2 규정과 리소스 ... 1234 24.3 웹 접근성 발의 ... 1236 24.4 이미지를 위한 대안 제시 ... 1236 24.5 구조에 초점을 맞춘 가독성 극대화 ... 1237 24.6 비주얼 스튜디오 .NET의 접근성 ... 1238 24.6.1 툴바 아이콘 크기 확대 ... 1238 24.6.2 텍스트 크기 확대 ... 1239 24.6.3 툴박스 수정 ... 1241 24.6.4 키보드 수정 ... 1242 24.6.5 윈도우 재정렬 ... 1243 24.7 비주얼 베이직의 접근성 ... 1244 24.8 XHTML 테이블의 접근성 ... 1250 24.9 XHTML 프레임의 접근성 ... 1254 24.10 XML의 접근성 ... 1254 24.11 VoiceXML™을 사용한 음성 합성과 인식 ... 1255 24.12 CallXML™ ... 1262 24.13 윈도우용 JAWS^? ... 1269 24.14 기타 접근성 도구 ... 1269 24.15 마이크로소프트 Windows 2000의 접근성 ... 1271 24.15.1 시각 장애인을 위한 도구 ... 1273 24.15.2 청각 장애인을 위한 도구 ... 1275 24.15.3 키보드를 사용할 수 없는 사용자를 위한 도구 ... 1276 24.15.4 마이크로소프트 내레이터 ... 1281 24.15.5 마이크로소프트 온스크린 키보드 ... 1283 24.15.6 마이크로소프트 인터넷 익스플로러 5.5의 접근성 기능 ... 1283 24.16 인터넷과 월드와이드웹 자원 ... 1285 A. 연산자 우선순위 차트 ... 1294 B. 수 체계 ... 1296 B.1. 소개 ... 1297 B.2. 2진수를 8진수와 16진수로 줄여 표현하는 방법 ... 1300 B.3. 8진수와 16진수를 2진수로 변환하는 방법 ... 1301 B.4. 2진수, 8진수, 16진수를 10진수로 변환하는 방법 ... 1301 B.5. 10진수를 2진수, 8진수, 16진수로 변환하는 방법 ... 1302 B.6. 음의 부호를 갖는 2진수 : 2의 보수 표기 ... 1304 C. 취업 기회 ... 1310 C.1 소개 ... 1311 C.2 구직자를 위한 자원 ... 1312 C.3 고용주를 위한 온라인상의 기회 ... 1314 C.3.1 온라인에 취업 정보 올리기 ... 1315 C.3.2 웹을 통한 직원 모집의 문제점 ... 1317 C.3.3 근무 공간의 다양성 ... 1318 C.4 직원 모집 서비스 ... 1318 C.4.1 온라인에서 취업 희망자에 대한 시험 ... 1320 C.5 직업 사이트 ... 1320 C.5.1 포괄적 직업 사이트 ... 1320 C.5.2 기술직 ... 1322 C.5.3 무선 기술직 ... 1322 C.5.4 온라인 계약 ... 1322 C.5.5 임원직 ... 1324 C.5.6 학생 및 젊은 전문가 ... 1325 C.5.7 다른 온라인 구인 사이트 ... 1325 C.6 인터넷과 월드와이드웹 자원 ... 1326 D. 비주얼 스튜디오 .NET 디버거 ... 1335 D.1 소개 ... 1336 D.2 정지점 ... 1337 D.3 데이터 검사 ... 1339 D.4 프로그램 제어 ... 1342 D.5 추가적인 프로시저 디버깅 기능 ... 1345 D.6 추가적인 클래스 디버깅 기능 ... 1348 E. ASCII 문자 집합 ... 1353 F. 유니코드 ... 1354 F.1 소개 ... 1355 F.2 유니코드 변환 포맷 ... 1356 F.3 문자와 글리프 ... 1357 F.4 유니코드의 장단점 ... 1358 F.5 유니코드 컨소시엄 웹 사이트 ... 1358 F.6 유니코드의 이용 ... 1359 F.7 문자 범위 ... 1362 G. COM 통합 ... 1367 G.1 소개 ... 1367 G.2 ActiveX 통합 ... 1368 G.3 DLL 통합 ... 1372 G.4 인터넷과 월드와이드웹 자원 ... 1376 H. HTML 4 개요 : 파트 1 ... 1379 H.1 소개 ... 1380 H.2 마크업 언어 ... 1380 H.3 HTML 편집 ... 1381 H.4 일반적인 요소 ... 1381 H.5 헤더 ... 1384 H.6 연결 ... 1385 H.7 이미지 ... 1388 H.8 특수문자와 많은 개행 ... 1391 H.9 번호 없는 리스트 ... 1393 H.10 중첩 및 번호 있는 리스트 ... 1395 H.11 인터넷과 월드와이드웹 자원 ... 1397 I. HTML 4 개요 : 파트 2 ... 1402 I.1 소개 ... 1403 I.2 기본적인 HTML 테이블 ... 1403 I.3 중간 HTML 테이블과 포맷팅 ... 1406 I.4 기본적인 HTML 폼 ... 1408 I.5 더욱 복잡한 HTML 폼 ... 1412 I.6 내부 연결 ... 1418 I.7 이미지 맵의 생성과 사용 ... 1422 I.8 〈meta〉 태그 ... 1424 I.9 frameset 요소 ... 1426 I.10 중첩된 프레임셋 ... 1428 I.11 인터넷과 월드와이드웹 자원 ... 1431 J. XHTML 개요 : 파트 1 ... 1437 J.1 소개 ... 1438 J.2 XHTML 편집 ... 1438 J.3 첫 번째 XHTML 예제 ... 1439 J.4 W3C XHTML 유효 검사 서비스 ... 1441 J.5 헤더 ... 1443 J.6 연결 ... 1445 J.7 이미지 ... 1448 J.8 특수 문자와 더 많은 라인 브레이크 ... 1452 J.9 비순차 리스트 ... 1454 J.10 중첩 및 순차 리스트 ... 1456 J.11 인터넷과 월드와이드웹 자원 ... 1459 K. XHTML 개요 : 파트 2 ... 1464 K.1 소개 ... 1465 K.2 기본적인 XHTML 테이블 ... 1465 K.3 중급 XHTML 테이블과 포맷팅 ... 1468 K.4 기본 XHTML 폼 ... 1470 K.5 더욱 복잡한 XHTML 폼 ... 1473 K.6 내부 연결 ... 1481 K.7 이미지 맵의 생성과 사용 ... 1484 K.8 meta 요소 ... 1486 K.9 frameset 요소 ... 1487 K.10 중첩된 frameset ... 1491 K.11 인터넷과 월드와이드웹 자원 ... 1493 L. HTML/XHTML 특수 문자 ... 1499 M. HTML/XHTML 컬러 ... 1500 N. 비주얼 스튜디오 .NET용 Crystal Report ... 1503 N.1 소개 ... 1503 N.2 Crystal Reports 웹 사이트 자원 ... 1503 N.3 Crystal Reports와 비주얼 스튜디오 .NET ... 1504 N.3.1 웹 애플리케이션에서 Crystal Reports ... 1506 N.3.2 Crystal Reports와 웹 서비스 ... 1506 관련서적 ... 1508 찾아보기 ... 1512