최근 2-3년 동안 내가 말한 사항들이
사내에서 8할은 통과되었다.
6할이 넘으면 원맨 경영의 폐해가 나타나는 위험신호라고 하는데
그렇다면 지금 혼다가 위험상태가 아닌가?
지금 상태에서 내가 계속 사장 자리에 있으면
우리 회사는 직선적으로 밖에 성장하지 못한다.
그렇기 때문에 나는 퇴임을 결정했다.
- 가와시마 전 혼다 사장
일사불란하게 조직을 움직이는 것은
모든 경영자가 바라는 바일 것입니다.
그러나 그 누구도 전지전능할 수 없다는 점에서
중요한 결정을 독점하는 것은
결코 바람직스럽지 못합니다.
사장의 생각이 사내에서 8할이 반영되는 것과
업적 호조라는 현재의 성공이
장래 실패의 씨앗을 키우는 것이라 판단하여
퇴임을 결심한 데서 경영자의 참 정신이 느껴봅니다.
오래 전 나는 2차 세계 대전 당시
나치 독일의 아우슈비츠 수용소에서 살아 남았던
유대인 부인을 만난 적이 있다. 독일에 대해
\"복수하고 싶지 않느냐\"고 했더니, 그녀는 잔잔히 웃으며
\"나는 복수에 대한 감정으로 내 인생을 파괴시키고
싶진 않습니다. 그러기엔 내 인생은 너무나
귀하고 아름다운 것입니다."하고
대답하는 것이었다.
- 한홍의《거인들의 발자국》중에서 -
* 가장 큰 복수는 용서라고 합니다.
한 순간의 복수를 위해 일생 동안 타인의 삶에
매달려 시간을 허비하지 말고, 한 순간의 용서로
응어리를 풀고 자기 삶을 더 아름답게 가꾸어가라는
뜻일 겁니다. 기억하되 용서하는 것,
가장 아름다운 복수입니다.
도서 소개 C#은 Microsoft의 새로운 플랫폼인 .NET Framework을 위한 새로운 프로그래밍 언어이다. .NET Framework은 코드의 실행을 관리하는 런타임 환경과 생각할 수 있는 거의 모든 프로그래밍 작업에 대한 다양한 클래스 라이브러리들로 구성된다. .NET 코드를 작성할 수 있는 언어는 많으나, .NET Framework을 위해 특별히 고안된 언어는 C# 뿐이며, 그런만큼 몇 년 후면 대부분의 개발자들이 C#으로 .NET 응용 프로그램을 만들게 될 것이다.
이 책은 C# 프로그램의 작성을 위한 필수적인 가이드가 될 것이다. 이 책은 C#과 .NET의 핵심 개념들을 설명하고, C# 언어의 기본 내용을 이야기한다. 그런 다음에는 개체 지향적 프로그래밍을 살펴보고, C#으로 Windows 응용 프로그램을 작성하는 방법을 설명한다. 또한 C#로 동적인 웹 페이지와 웹 서비스를 작성하는 방법과 실제로 작동하는 C# 응용 프로그램에 대한 두 개의 사례 연구도 제공한다.
이 책은 누구를 위한 책인가?
Beginning C#은 초보자 또는 현대의 개체 지향적 프로그래밍 기술을 지원하지 않는 언어들로부터 .NET Framework으로 이동하고자 하는, 비교적 경험이 없는 프로그래머들도 쉽게 읽을 수 있는 C# 입문서이다. C++에 대한 지식이 있어야 이해할 수 있는 여러 C# 책들에 지친 사람이라면 이 책이 큰 도움이 될 것이다.
이 책이 다루는 내용
- C# 언어
- C#을 이용한 .NET 프로그래밍
- 개체 지향적 프로그래밍
- Windows 응용 프로그램 작성
- 데이터베이스 접근
- C#을 이용한 웹 페이지 및 웹 서비스 작성
목 차 제1부 - 시작하기
제1장 C#의 소개
.NET Framework이란
.NET Framework에 포함된 것들
.NET Framework으로 응용 프로그램을 작성하려면
C#이란 무엇인가
C#으로 작성할 수 있는 응용 프로그램 종류들
이 책의 C#
Visual Studio.NET
VS 솔루션
요약
제2장 C# 프로그램 만들기
Visual Studio.NET 개발 환경
콘솔 응용 프로그램
Windows Forms 응용 프로그램
요약
제2부 - C# 언어의 기초
제3장 변수와 표현식
C#의 기본적인 구문
기본적인 C# 콘솔 응용 프로그램의 구조
변수들
단순 형식들
변수 명명 규칙
리터럴 값들
변수의 선언과 배정
표현식
산술 연산자들
배정 연산자들
연산자 우선 순위
네임스페이스
요약
연습 문제
제4장 흐름 제어
부울 논리
비트 단위 연산자들
부울 배정 연산자들
전체적인 연산자 우선 순위
goto 문
분기
3항 연산자
if 문
switch 문
루프
do 루프
while 루프
for 루프
루프의 흐름 제어
무한 루프
요약
연습 문제
제5장 변수에 대해 좀더 자세히
형식 변환
복잡한 변수 형식
열거형
구조체
배열
문자열 조작
요약
연습 문제
제6장 함수
함수의 정의와 사용
반환값
매개변수
변수 범위
다른 구조에서의 변수 범위
매개변수 및 반환값 대 전역 데이터
Main() 함수
구조체 함수
함수 오버로딩
대리자
요약
연습 문제
제7장 디버깅과 오류 처리
Visual Studio에서의 디버깅
비 중단 모드(정상 모드)에서의 디버깅
중단 모드에서의 디버깅
오류 처리
예외
요약
연습 문제
제3부 - 개체 지향적 프로그래밍
제8장 개체 지향적 프로그래밍 입문
개체 지향적 프로그래밍이란
개체란 무엇인가?
모든 것은 개체
개체의 수명주기
정적 및 인스턴스 클래스 멤버
OOP 기법들
인터페이스
상속
다형성
개체들 사이의 관계
연산자 오버로딩
이벤트
참조 대 값 형식
윈도우즈 응용 프로그램에서의 OOP
요약
연습 문제
제9장 클래스의 정의
C#에서의 클래스 정의
인터페이스 정의
System.Object
생성자와 소멸자
생성자의 호출 순서
Visual Studio.NET의 OOP 도구들
클래스 뷰 창
개체 브라우저
클래스의 추가
클래스 라이브러리 프로젝트
인터페이스 대 추상 클래스
구조체와 클래스
얕은 복사 대 깊은 복사
요약
연습 문제
제10장 클래스 멤버의 정의
멤버 정의
VS 멤버 추가 마법사
멤버 속성들
추가적인 클래스 멤버 주제들
기반 클래스 메서드 숨기기
재정의된 또는 숨겨진 기반 클래스 메서드의 호출
중첩된 형식 정의
인터페이스 구현
클래스에서 인터페이스를 구현
예제 응용 프로그램
응용 프로그램의 설계
클래스 라이브러리의 작성
클래스 라이브러리를 사용하는 클라이언트 응용 프로그램
요약
연습 문제
제11장 클래스 고급 주제
컬렉션
컬렉션의 사용
컬렉션의 정의
연산자 오버로딩
변환 연산자
CardLib 업그레이드 2부
고급 변환
박싱과 언박싱
is 연산자
as 연산자
깊은 복사
CardLib 업그레이드 3부
사용자 정의 예외
CardLib 업그레이드 4부
요약
연습 문제
제12장 이벤트
이벤트란 무엇인가
이벤트의 사용
이벤트의 처리
이벤트의 정의
CardLib의 확장과 사용
CardLib를 위한 카드 게임 클라이언트
요약
연습 문제
메뉴
메뉴 컨트롤의 사용
MenuItem 컨트롤
MenuItem의 이벤트들
ContextMenu 컨트롤
ToolBar 컨트롤
ToolBar의 속성들
ToolBar의 이벤트들
ToolBarButton의 속성들
SDI와 MDI 응용 프로그램
MDI 응용 프로그램의 작성
컨트롤 제작
사용자 정의 컨트롤의 디버깅
LabelTextbox 컨트롤의 확장
요약
연습 문제
제15장 대화상자의 사용
대화상자
대화상자 사용법
파일 대화상자들
OpenFileDialog
SaveFileDialog
인쇄
인쇄 기능의 구조
여러 페이지 인쇄
페이지 설정
인쇄 대화상자
인쇄 미리보기
PrintPreviewDialog
PrintPreviewControl
FontDialog와 ColorDialog
FontDialog
ColorDialog
요약
연습 문제
제16장 GDI+ 입문
그래픽 드로잉의 개요
Graphics 클래스
개체의 해제
좌표계
색
Pen 클래스를 이용한 선 그리기
Brush 클래스를 이용한 도형 그리기
Font 클래스를 이용한 텍스트 출력
이미지를 이용한 그리기
TextureBrush로 그리기
Pen으로 이미지 그리기
이미지로 텍스트 그리기
더블 버퍼링
GDI+의 고급 기능들
클리핑
인쇄
인쇄 미리 보기
System.Drawing.Drawing2D
System.Drawing.Imaging
요약
제17장 Windows 응용 프로그램의 설치 및 배포
설치 및 배포란
설치 및 배포 프로젝트
Windows Installer의 구조
Windows Installer의 용어들
Windows Installer의 장점
Simple Editor를 위한 설치 패키지 만들기
설치에 대한 계획
프로젝트 작성
프로젝트 속성
설치 편집기들
파일 시스템 편집기
파일 형식 편집기
시작 조건 편집기
사용자 인터페이스 편집기
프로젝트의 빌드
설치
환영
추가 정보
사용권 계약
Optional Files
설치 폴더 선택
설치 확인
진행률
설치 완료
응용 프로그램의 실행
자동 복구
제거
요약
제5부 - .NET Framework 상에서의 프로그래밍
제18장 데이터 액세스 기초
VS에서의 데이터 액세스
데이터 액세스의 매우 간략한 역사
ADO.NET의 소개
VS에서 데이터 보기
데이터베이스에 연결
데이터베이스 테이블과 관계
응용 프로그램에서 데이터베이스에 접근
데이터 어댑터 구성 마법사
추가적인 정보 표시
DataSet 탐색
목록 상자 추가
Datagrid 추가
Datagrid의 포매팅
데이터베이스 갱신
XML
XML 문서
XML 네임스페이스
적격 XML과 유효한 XML
XML 문서의 유효성
C#의 XML 자동 문서화
요약
연습 문제
제19장 ADO.NET을 이용한 데이터 액세스
ADO.NET이란
ADO.NET이라는 이름
ADO.NET의 설계 목표
ADO.NET 클래스 및 개체의 개요
공급자 개체들
소비자 개체들
System.Data 네임스페이스의 사용
DataSet에 여러 테이블들을 넣기
XML과 ADO.NET
ADO.NET DataSet의 XML 지원
ADO.NET의 SQL 지원
DataAdapter의 SQL 명령
SQL 명령을 직접 실행하려면
ADO.NET에 대해 더 알고 싶다면
요약
연습 문제
제20장 파일 다루기
스트림
입력과 출력을 위한 클래스들
File과 Directory 클래스
FileInfo 클래스
DirectoryInfo 클래스
FileStream 개체
StreamWriter 개체
StreamReader 개체
고급 주제들
파일 시스템의 감시
비동기적 파일 액세스
요약
연습 문제
제21장 .NET 어셈블리
어셈블리 소개
구성요소
구성요소의 이점
구성요소의 간략한 역사
자기 서술적 특징
어셈블리의 구조
어셈블리 작성
어셈블리의 내용 보기
매니페스트
어셈블리 특성들
어셈블리의 호출
전용 및 공유 어셈블리
전용 어셈블리
공유 어셈블리
어셈블리 검색
요약
연습 문제
제22장 어트리뷰트(attribute)
어트리뷰트란
리플렉션
내장 어트리뷰트들
사용자 정의 어트리뷰트
TestCaseAttribute
System.AttributeUsageAttribute
요약
제6부 - C#과 웹
제23장 웹 프로그래밍의 기초
서문
인터넷의 간략한 역사
월드 와이드 웹
웹의 작동 방식
HTTP - HyperText Transfer Protocol
웹 프로그래밍의 기초
HTML
HTML 폼
정적 페이지 대 동적 페이지
웹의 진화
.NET 웹 프로그래밍
ASP.NET
WebForms
요약
제24장 ASP.NET 응용 프로그램
웹로그 작성
응용 프로그램의 기초
동적인 요소의 추가
웹로그 항목들
웹로그 항목의 저장
웹로그 항목의 표시
날짜 표시
페이지 꾸미기
항목들의 목록 표시
새 웹로그 항목의 생성
웹로그 항목의 수정
항목들의 정렬
사용자 세션과 쿠키
웹 사이트에 대한 접근 제한
요약
연습 문제
제25장 웹 서비스
웹 서비스 이전의 기술들
원격 프로시저 호출(RPC)
SOAP
웹 서비스의 용도
호텔 여행사 응용 프로그램 시나리오
도서 배급 응용 프로그램 시나리오
클라이언트 응용 프로그램의 종류
응용 프로그램 기반 구조
웹 서비스 기반 구조
웹 서비스를 위한 검색 엔진
웹 서비스 디스커버리
메서드 정보
메서드 호출
웹 서비스와 .NET Framework
웹 서비스 만들기
클라이언트
간단한 ASP.NET 웹 서비스 작성
생성된 파일들
웹 메서드의 추가
웹 서비스 테스트
윈도우즈 클라이언트의 구현
ASP.NET 클라이언트 작성
요약
제7부 - 사례 연구
사례 연구 1 웹 사이트 설문
웹 사이트 설문
버전 1
요구 사항
개체 모델 설계(업무 로직 계층)
테스트
데이터 구조(데이터 계층)
개체의 구현
사용자 인터페이스(표현 계층)
버전 1의 평가
버전 2
추가적인 요구사항들
설문 결과 도구
1인당 1표
설문 컨트롤
설문 응용 프로그램의 3 계층 구조
요약
사례 연구 2 온라인 뉴스레터 관리자
NewsMailer
응용 프로그램의 개요
응용 프로그램의 설계
데이터와 업무 개체들
데이터베이스 설계
데이터베이스 액세스를 위한 업무 클래스들
구성 데이터 관리
관리용 사용자 인터페이스
사용자 정의 컨트롤의 작성
리스트 관리 페이지
구독자 관리
구독자에게 이메일 전송
Utilities 클래스
뉴스 저장소의 관리
설정 변경 페이지
레이아웃 변경
사용자를 위한 구독 신청 폼
메일링 리스트 구독과 해지
응용 프로그램의 보안
어셈블리의 컴파일
응용 프로그램의 실행
브라우저 호환성 문제
요약
조직이 지향하는 방향에 동조하지 않는 임원을
얼마나 기다려줘야 하는가? 라는
질문에 대한 정답은 ‘몇분에서 며칠이면 충분하다’이다.
생산성 높은 기업의 임원들 중에서,
기업의 새로운 진행방향에
수주일에서 수개월씩 시간을 제공받았다는 사람은
단 한번도 만난 적이 없다.
- 제이슨 제닝스 ‘작은 것이 많은 것이다’에서
잭 웰치 회장도 높은 성과를 창출하더라도
회사의 핵심 가치에 역행하는
임원들은 모두 정리했습니다.
임원이야말로 회사의 핵심인재입니다.
이들의 적극적 참여는 조직의 목적 달성에
지대한 영향을 미치는 결정적 소입니다.
임원들이 보이지 않게 주저하는 눈치만 보여도
벌써 부하 직원들은 알아서 몸을 움츠리게 됩니다.
현대는 지식의 반감기이다.
작년에 익힌 새로운 지식도
올해에는 절반의 효과밖에 볼 수 없고,
내년에는 4분의 1,
내후년에는 8분의 1로 줄어들고,
결국 아무 쓸모가 없어진다.
아무리 훌륭한 교육을 받은 사람도
3년만 공부를 하지 않으면
그 사람이 가지고 있는 지식은 무용지물이 된다.
- 문국현 유한킴벌리 사장, ‘대한민국 희망보고서 유한킴벌리’에서
지식정보사회에서는 학벌, 학위, 근속연수, 연고, 자격증 보다
훨씬 더 중요한 것이 누가 어떤 지식과 경험을
가지고 있느냐 하는 것입니다.
한편, 지식사회가 진전될수록 경영학등 실용적 지식의
반감기는 더욱 짧아지고 있습니다.
평생학습이 현대를 살아가는 모든 이에게
필수적일 수 밖에 없는 이유입니다.
\"지금 여기에서,
지금 가진 것으로, 지금 할 수 있는 것을 하라.\"
목표를 현실적으로 이루기 힘들 정도로 높게 잡으면
실패할 가능성도 그만큼 커진다. 그렇기 때문에
작은 목표부터 세우는 것이 좋다.
하나하나 성취할 때마다 계속해 나갈 수 있다는 의욕이 샘솟는다.
성공하는 기분을 느껴라. 놀랍도록 의욕이 넘칠 것이다.
- 킴벌리 커버거의 《당당한 내가 좋다》중에서 -
* 거창하게 시작할수록 허풍선이 되기 쉽습니다.
목표는 크되 시작은 작게 하는 것이 좋습니다.
몇가지 지침이 필요합니다. 예를 들면...
1. 준비는 철저한가.
2. 나에게 즐거운 일인가.
3. 다른 사람에게도 도움이 되는가.
4. 성공하든 실패하든 의미있는 일인가.