프로그래밍 언어
1. IDE(Integrated Development Environment) 설치
a. Windows Server
b. SQL Server
c. Visual Studio
d. Office System
2. 기본구조
a. Hello World 프로그램
3. 기본입출력문
a. Console.WriteLine()
b. Console.ReadLine()
c. Console.ReadKey()
d. 자리표시자/자리채움자/PlaceHolder : {n}
e. 이스케이프 시퀀스(Escape Sequence)/특수 기호/이스케이프 문자
i. \n, \b, \t
ii. \0 : 널(NULL) 문자, 값이 없다???, 종결 문자열
4. 데이터형식(DataType)/변수(Variable)/상수(Constant)
a. 데이터 형식(Data Type) : C#은 데이터 형식이 풍부
i. 정수 : int
ii. 실수 : double, float
iii. 문자 : char
iv. 문자열 : string
v. 객체 : object
vi. 불린 : bool
b. 변수 : 메모리 상의 임시 데이터 저장 공간
c. 상수 : 한번 설정 후 값이 변하지 않는 변수
5. 연산자
a. 산술 : +, -, *, /, %
b. 대입 : =, +=, -=
c. 비교 : ==, !=
d. 논리 : &&, ||, !
e. 증감 : ++, --
f. 조건(3항) : ?:
g. 시프트 : <<, >>
h. 비트 : &, |, ^
i. 기타 : 닷넷에서만 제공하는 연산자
6. 제어문
a. 조건문
i. if
ii. switch
b. 반복문
i. for : 구간반복
ii. while : 조건반복
iii. do : 실행반복
iv. foreach : 배열/컬렉션 반복
c. 기타(점프)
i. break
ii. continue
iii. goto
iv. return
7. 배열(Array) :
a. Variable : (데이터 저장 관점)하나의 이름으로 하나의 데이터형식을 가지는 하나의 데이터만 저장
b. Array : 하나의 이름으로 동일한 데이터형식을 여러 개 저장할 수 있는 구조
c. 종류
i. 1차원 배열
ii. 다차원 배열(2차원, 3차원, …)
iii. 배열의 배열
8. 함수(메서드)(Function/Sub Procedure/Method) : 자주 사용하는 코드블록(패턴)을 하나의 이름으로 만들어 놓은 코드의 집합, 사용 목적 : 재 사용
a. 매개변수(Parameter)가 없는 함수
b. 매개변수(Argument)가 있는 함수 : Sub Procedure
c. 반환값(Return Value)가 있는 함수 : Function
9. 구조체(Struct)
a. 설명
i. 변수(Variable) : 하나의 이름으로 하나의 데이터형식을 하나만 저장
ii. 배열(Array) : 하나의 이름으로 하나의 DataType(int, string)을 여러 개 저장
iii. 구조체(Struct) : 하나의 이름으로 여러 개의 DataType을 한 개/여러 개 저장
1) static 붙이면 : 정적 접근이 가능, 쩜 찍었을 때 멤버가 노출
2) static 빼면 : 인스턴스(변수 선언해야 사용) 접근이 가능
iv. 클래스(Class) : 구조체의 모든 기능 + 함수(메서드;동작;기능)
b. 내장 구조체 : 이미 만들어져 있는
i. 날짜/시간차 관련 구조체 : DateTime, TimeSpan
ii. 문자(Char) 구조체
iii. …
10. 열거형(Enumeration)
a. C#에서 열거형은 기억하기 어려운 상수들의 집합을 기억하기 쉬운 하나의 이름으로 묶어서 관리하는 표현 방식이다. 열거형은 enum 키워드를 사용한다. 참고로, 이미 만들어져 있는 열거형을 편리하게 자주 사용하나, 우리가 만들어서 작성하는 경우는 초반에는 적다…
11. 클래스(Class)
a. 구조체의 모든 기능 + 메서드(함수) 포함
b. 현실세계 : 자동차의 설계도 역할
c. 프로그램세계 : public class Car { }
d. 클래스 : 자동차 설계도
e. 개체(객체;Object;오브젝트) : 자동차 설계도로부터 생성(조립;인스턴스화)된 하나의 단위(변수)
i. Instance : 클래스로부터 만들어진 하나의 개체, 새로운 실체 => 개체
ii. 개체, 객체, 오브젝트, 인스턴스, 컨트롤, => 컴포넌트, 프레임워크
f. 구조체와 마찬가지로 하나의 Data Type(데이터 형식)이 된다.
g. Static과 Instance
i. 정적 접근 : 개체 생성하지 않고도 멤버에 접근 : 작은 개념
ii. 인스턴스 접근 : 반드시 new 연산자를 통해서 객체 생성 후 멤버에 접근
1) 클래스명 개체명 = new 클래스명();
12. 필드(Field)
a. 자동차의 부품 역할 : 부품은 꽁꽁 숨겨라… 캡슐화(Encapsulation)
b. 클래스내에 선언된 멤버 변수(Member Variable) : 전역 변수(Global Variable)와 비슷
c. 필드는 초기화하지 않아도 자동 초기화
i. Int형 : 0으로
ii. String형 : String.Empty로
iii. 필드는 public 접근 한정자(Access Modifier)를 붙여도 되지만, 개념상 private 접근 수식자를 붙인다.
1) public string name; => private string name;
d. 현재까지 교재 학습 : 171페이지~182페이지 내용 읽어보세요…
13. 생성자(Constructor) : 182페이지
a. 자동차 시동걸기/조립 등의 행위(메서드)
b. 클래스명과 동일한 이름의 반환값이 없는 메서드
c. 클래스의 필드 초기화시키는 역할
d. 개체생성시 제일 먼저 실행되는 메서드
e. 종류
i. Public 생성자 : 개체의 인스턴스 생성시 호출
ii. Static 생성자 : static 접근시 호출, 매개변수를 가질 수 없음
14. 소멸자(Desctructor) : 188페이지까지… 정독
a. 자동차 폐차, 주차 및 시동끄기
i. 싼 개념 : 본인이 직접 주차 및 시동끄기
ii. 비싼 개념 : 주차요원(GC)이 대신
b. GC 엔진에 의해서 사용하므로, 개발자가 건드릴 일 없다.
c. 클래스에서 제일 마지막에 실행되는 메서드
15. 메서드(Method):205~209페이지
a. 자동차의 동작 : 전진(), 후진(), 좌회전()
b. 클래스의 기능 : 개체가 수행할 수 있는 기능/동작/행위 등
c. 매개변수 전달 방식 4가지 비교(메서드 호출, 메서드 선언)
i. 값 전달 방식(val) : call by value, 값만 전달
ii. 참조 전달 방식(ref) : call by reference, 데이터는 호출쪽에만 저장
iii. 반환형 전달 방식(out) : 변수를 초기화하지 않고, 함수에서 초기화시켜준다.
iv. 가변형 전달 방식(params) : 여러 개의 매개변수가 필요할 때
d. 메서드 오버로드/오버로딩(Overload): 다중 정의
i. 클래스내에 동일한 이름의 메서드를 매개변수를 달리해서 여러 개(다중) 선언
16. 속성(Property) : 210~217p
a. 클래스 내의 필드의 내용을 설정(set)하거나 참조(get)할 때 사용하는 코드 블록
b. 개체의 성질/특징/색상/크기/모양 등등의 정의할 때 사용
c. 빨간색, 바퀴 4개 등의 속성을 가지는 자동차 개체
d. private한 필드를 public한 속성으로 외부에 공개
e. C/C++에서는 주로 GetXXX(), Set() 함수를 사용
17. 인덱서(Indexer) // ==> "속성의 확장판"
a. 개체를 배열형식으로 표현
b. 자동차 개체의 카탈로그(?)
i. 현대[0] = "에쿠스"; 현대[1] = "소나타"; => 정수형 인덱서(서수 사용)
1) 현대.FirstCar = "에쿠스"; 현대.SecondCar = "제네시스";
2) 현대.GetName(0) = "'에쿠스"; 현대.GetName(1) = "제네시스";
ii. 현대["첫번째"] = "에쿠스"; 현대["신차"] = "제네시스"; => 문자열 인덱서
iii. 출력 : 첫번째 자동차를 출력한다면???
1) 현대.GetName(0); // 메서드 호출
2) 현대.FirstCar; // 속성 호출
3) 현대[0]; // 정수형 인덱서
4) 현대["첫번째"]; // 문자열 인덱서
c. 반복기(Iterator)
내가 만든 객체를 foreach문으로 돌리고자할 때 반복기가 구현되어있어야 함.
foreach문은 GetEnumerator함수를 호출한다. 'GetEnumerator()메서드'의 반환값은 'IEnumerator인터페이스'이다.
18.대리자(Delegate) : 317~332페이지(332페이지는 나중에)
a. 대리자, 위임, 델리게이트
b. 한번 호출로 하나 이상의 메서드를 대신해서 호출하는 개념
i. 다중 메서드 호출
c. 메서드 -> (확장) -> 대리자 ->(확장) -> 이벤트
d. 대리자는 이벤트를 만들기 위한 중간 단계로만 사용된다.
e. 자동차로 따지면, 말 그대로 대리운전
i. 집으로 갑시다()
1) 전진() -> 좌회전() -> 우회전() -> 후진()
f. 무명(익명:Anonymous) 메서드 : 대리자에 등록되는 메서드 중 간단한 기능이면 생략해서 사용하고자 할 때
19. 이벤트(Event)
a. 개체가 수행할 수 있는 동작(메서드)의 수행 결과(사건/사고/이벤트)
b. 윈도우 응용프로그램에서 마우스 클릭 이벤트, 마우스 오버 이벤트, 더블클릭 이벤트
c. 자동차로 예로 들면,
i. 자동차설계도(클래스)로부터 하나의 빨간색 스포츠카(속성) 자동차(개체)를 만들어서, 시동걸고(생성자) 전진 및 좌회전(메서드)을 하면서, 가끔은 대리운전(대리자)도 부르고, 그러다가 과속(메서드)이라는 기능 수행 결과 교통사고(이벤트) 사고가 발생해서, 그나마 멀쩡한 카오디오(필드) 중고로 팔고, 폐차(소멸자)했다.
20. 네임스페이스(Namespace) : 교재62페이지
a. 자동차 브랜드
i. 현대자동차
ii. 삼성자동차
b. 서로 관련있는 클래스를 묶어서 관리
c. 중첩가능
i. System.Web.UI
ii. System.Collection
iii. RedPlus.Library.Menu.dll
iv. RedPlus.Library.Board.dll
21. 인터페이스(Interface)
a. 추상 클래스와 같이 다른 클래스에게 멤버명을 미리 강제로 사용토록 할 때
b. 인터페이스는 몀버명만 갖는반면, 추상클래스는 다름 멤버도 가질 수 있다.
c. 인터페이스는 자동차로 따지면, 전세계표준(ISO), 국내표준㉿ 등의 의미를 지닌다.
d. C#은 다중상속이 불가능하지만(C++가능), 인터페이스 다중 상속은 가능하다.
e. 자동차 규격, 예를들어 배터리 충전(점프선)
22. 특성(Attribute) : 코드에 대한 설명문(메타데이터)
a. 멤버 앞에 [특성(특성값)] 식으로 붙여서 사용
b. 분야(Web,XML, ...)에 따라서 많은 내장 특성이 있다.
c. 사용자 정의 특성을 만들고자할 때에는 System.Attribute를 상속받아 설계
d. 특성을 통해서 런타임시에 추가적인 기능을 부여 가능
e. 자동차로 따지자면, 자동차 액세서리