프로그래밍 언어(절차지향)
IDE(Integrated Development Enve\ironment)설치
windows server
SQL server
visual studio
office system
기본구조
기본입출력문
Console.WriteLine() 출력 자동 줄바꿈
Console.Write() 출력 \n으로 줄바꿈
ConSole.ReadLine() 문자열 입력
Console.ReadKey()
Console.Read
자리표시자
이스케이프 시퀀스(Escape Sequence):특수기호, 이스케이프 문자
\n, \b, \t
\0: 널(null)문자, 문자 값이 없다
데이터형식/변수(Varible)/상수(Constant)
데이터 형식(data type): C#은 데이터 형식이 풍부
정수:int
실수:double
문자:char
문자열:string
객체:object
불린:bool
변수:메모리상의 임시 데이터 저장공간
상수:한번 설정후 값이 변하지 않는 변수
연산자(Operators)
산술 : + - * / %
대입 : = += -=
비교 : == !=
논리 : && || !
증감 : ++ --
조건 : ?:
시프트 : << >>
비트 : & | ^
기타 : 닷넷에서만 제공하는 연산자
제어문(Statements)
조건문
if
switch
반복문
for 구간 반복
while 조건 반복
do 실행반복
foreach 배열/컬렉션 반복
기타
break
continue
goto
배열(Array):
변수varible:(데이터저장 관점)하나의 이름으로 하나의 데이터형식을 가지는 하나의 데이터만 저장.
배열array:하나의 이름으로 동일한 데이터형식(int,string)을 여러 개 저장할 수 있는 구조
종류- 1차원 배열
다차원 배열(2차,3차원,..)
배열의 배열
함수(메서드)(Function/Sub Procedure/Method):동일한 코드를 반복하여 사용할 수 있도록 하나의 이름으로 만들어 놓은 코드의 집합이라고 볼수 있다. 어떤값을 받아서 그 값을 가지고 가공을 거쳐 어떤 결과값을 반환시켜주는 코드이다.
매개변수(Parameter)가 없는 함수
매개변수(Parameter)가 있는 함수:Sub Procedure
반환값(Return Value)가 없는 함수:Function
구조체(struct)
설명 - 구조체:하나의 이름으로 여러개의 Data Type을 한개/여러개 저장
static 붙이면:정적 접근이 가능, .찍었을때 멤버가 노출
static 빼면:인스턴스(변수 선언해야 사용) 접근이 가능
클래스:구조체의 모든기능 + 함수(메서드;동작;기능)
내장 구조체:이미 만들어져 있는
-날짜/시간차 관련 구조체:DateTime,TimeSpan
-문자(char)구조체
...
열거형(Enumeration): C#에서 열거형은 기억하기 어려운 상수들의 집합을 기억하기 쉬운 하나의 이름으로 묶어서 관리하는 표현 방식이다. 열거형은 enum 키워드를 사용한다. 참고로 이미 만들어져 있는 열거형을 편리하게 자주 사용하나 우리가 만들어서 작성하는 경우는 초반에는 적다.
클래스(Class) : 구조체의 모든 기능 + 메서드(함수)포함 / 특정 종류의 객체내에 있는 변수와 메서드를 정의하는 일종의 틀
현실세계 : 자동차의 설계도 역할
프로그램세계 : public class Car{}
개체(객체;Object): 자동차 설계도로부터 생성(인스턴스)된 하나의 단위(변수)
- Instance : 클래스로부터 만들어진 하나의 개체, 새로운 실체 -> 개체
- 개체, 객체, 오브젝트, 인스턴스, 컨트롤 -> 컴포넌트, 프레임워크(클래스집합)
구조체와 마찬가지로 하나의 데이터 형식(Data Type)이 된다.
static과 Instance
-정적접근 : 개체 생성하지 않고도 멤버에 접근
-인스턴스 접근 : 반드시 new 연산자를 통해서 객체 생성후 멤버에 접근
-클래스명 개체명 = new 클래스명()
~~클래스(Class):내장 클래스
기본: Console
Convert
String]
StringBuilder
Math
Enviroment:환경변수
Random:랜덤
etc
컬레션
Stack-접시쌓는 모양 push,pop,sp(스택포인터),오류-스택오버플로(꽉찼을때),스택언더플로(비었을때)
Queue-대기행렬 Enqueue(QueueIn),Dequeue(QueueOut)
ArrayList
Hashtable
Etc
DB:ADO.NET
Windows:윈폼, WPF
web:ASP.NET
(객체지향프로그래밍) Class구성요소
클래스(Class)
메서드(Method)
생성자(Construtor)
소멸자(Destrutor)
속성(Property)
인덱서(Indexer)
필드(Field)
대리자(Delegate)
이벤트(Event)
네임스페이스(Namespace)~~ : 자동차 브랜드 개념
특성(Attribute)
Main Method : Entry Point
필드(Field) : 클래스내에 선언된 멤버변수(Memver Variable): 전역변수(Global Variable)와 비슷
필드는 무조건 Private
필드는 초기화 하지 않아도 자동 초기화
- Int형 = 0으로
- String형 = String.Empty로
필드는 public 접근 한정자(Access Modifier)를 붙여도 되지만, 개념상 private 접근 수식자를 붙인다
- public string name; -> private string name;
자동차의 부품역할 : 부품숨기듯이 .. 캡슐화(Encapsulation)
생성자(Construtor) : 클래스명과 동일한 이름의 반환값이 없는 메서드
클래스의 필드 초기화시키는 역할
개체 생성시 제일 먼저 실행되는 메서드
자동차 시동걸기/조립등의 행위(메서드)
public 생성자 : 개체의 인스턴스 생성시 호출
Static 생성자 : static 접근시호출, 매개변수를 가질수 없음
소멸자(Destrutor) : GC 엔진에 의해서 사용하므로, 개발자가 건드릴 일 없다
클래스에서 제일 마지막에 실행되는 메서드
자동차 폐차, 주차 및 시동끄기
-본인 직접 주차
-주차요원이 대신 주차
메서드(Method): 클래스의 기능 : 개체가 수행할 수있는 기능/동작/행위 등
매개변수 전달 방식 가지 비교(메서드 호출, 메서드 선언)
-값 전달 방식(val) : call by value, 값만 전달
-참조 전달 방식(fef) : call by reference, 데이터는 호출쪽에만 저장
-반환형 전달 방식(out) : 변수를 초기화하지 않고 함수에서 초기화 시켜준다.
-가변형 전달 방식(params) : 여러 개의 매개변수가 필요할 때
자동차의 동작
메서드 오버로드/오버로딩(Overload) : 다중정의
- 클래스내에 동일한 이름의 메서드를 매개변수를 달리해서 여러개(다중) 선언
속성(Property)
클래스 내의 필드의 내용을 설정(set) 하거나 참조(get) 할때 사용 하는 코드 블록
개체의 성질/특징/색상/크기/모양 등등의 정의할 때 사용
빨간색, 바퀴 4개등의 속성을 가지는 자동차 개체
private한 필드를 public한 속성으로 외부에 공개
C/C++ 에서는 주로 GetXXX(),SetXXX() 함수를 사용
인덱서(Indexer)
개체를 배열형식으로 표현
자동차 개체의 카탈로그?
현대[0]="에쿠스"; 현대[1]="소나타"; -> 정수형 인덱서(서수 사용)
- 현대.FirstCar="에쿠스"; 현대.SecondCar="제네시스";
- 현대.GetName(0)="에쿠스"; 현대.GetName(1)="제네시스";
현대["첫번째"]="에쿠스"; 현대["신차"]="제네시스" -> 문자열 인덱서
출력: 첫번째 자동차를 출력한다면?
- 현대.GetName(0); // 메서드 호출
- 현대.FirstCar; // 속성 호출
- 현대[0]; // 정수형 인덱서
- 현대["첫번째"]; // 문자열 인덱서
반복기(Iterator)
대리자(Delegate): p317~322 다중 메서드 호출
대리자, 위임, 델리게이트
한번 호출로 하나 이상의 메서드를 대신해서 호출하는 개념
메서드->(확장)->대리자->(확장)->이벤트
대리자는 이벤트를 만들기 위한 중간 단계로만 사용된다
자동차 대리운전 개념 -집으로 가다
전진()->좌회전()->우회전()->후진()
무명(익명:Anonymous)메서드(p342): 대리자에 등록되는 메서드 중 간단한 기능이면 생략해서 사용하고자 할 때
이벤트(Event) - p332~342
개체가 수행 할 수 있는 동작(메서드)의 수행 결과(사건,사고,이벤트)
윈도우 응용 프로그램에서 마우스 클릭 이벤트, 마우스 오버 이벤트, 더블클릭 이벤트,
- 자동차 설계도(클래스)로부터 하나의 빨간색 스포츠카(속성) 자동차(개체)를 만들어서 시동걸 고(생성자) 전진 및 좌회전(메서드)을 하면서 가끔은 대리운전(대리자)도 부르고 과속(메 서드)이라는 기능 수행결과 교통사고(이벤트)가 발생해서 그나마 멀쩡한 오디오(필드)를 팔고 폐차(소멸자)했다.
인터페이스(Interface)
- 추상 클래스와 같이 다른 클래스에게 멤버명을 미리 강제로 사용토록 할 때
- 인터페이스는 멤버명만 갖는반면 추상클래스는 다른 멤버도 가질 수 있다.
- 인터페이스는 자동차로 따지면 전세계표준(ISO), 국내표준(ks마크)등의 의미를 가짐
- C#은 다중상속이 불가능하지만(C++은 가능) 인터페이스 다중 상속은 가능하다.
- 자동차 표준/규격, 예를들어 배터리 충전
네임스페이스(Namespace) : p62~ 서로 관련있는 클래스를 묶어서 관리
자동차 브랜드 개념
중첩가능
System.Web.UI
System.Collection
RedPlus.Library.Menu.dll
RedPlus.Library.Board.dll
특성(Attribute): 애트리뷰트 : 코드에 대한 설명문(메타데이터)
멤버 앞에 [특성(특성값)] 식으로 붙여서 사용
분야 (WEB ,XML.... )에 따라서 많은 내장 특성이 있다
사용자 정의 특성을 만들고자 할 때 에는 System.Attribute를 상속받아 설계
특성을 통해서 런타임시에 추가적인 기능을 부여 가능
자동차로 따지자면 액세서리
---------------------------------------------------------------------------------------------
객체지향 관련용어
Inheritance : 상속
super/base/parent클래스의 기능을
sub/derived/child클래스에 상속
Encapsulation : 캡슐화
필드를 숨겨라 필드는 private
외부에 공개시 public한 Property로 공개
@@@ 상속(Inheritance) : 클래스들간의 관계
클래스 상속
- 개체지향 프로그래밍의 장점 중의 하나는 이미 만들어져 있는 클래스를 재사용 하는 것이다. 이 때 재사용에 대한 핵심 개념이 바로 상속이다.
- 부모의 재산을 자식에게 상속하듯이 부모클래스(기본클래스)의 모든 멤버를 자식클래스(파생클래스)에게 재사용토록 허가하는 기능을 의미한다.
- 여려 클래스들 간의 관계를 설정함에 있어서 수평관계가 아닌 부모와 자식간의 관계처럼 계층적인 관계를 표현하고자 할 때 사용하는 개념을 상속이라 한다.
Object 클래스 p347
- 모든 클래스들의 부모 클래스
- 닷넷에서 가장 높은 층에 속하는 시조격 클래스
- 새롭게 만들어지는 모든 클래스들은 object 클래스로부터 상속받음 (생략가능)
기본(Base) 클래스
- 다른 클래스의 부모 클래스가 되는 클래스
- Base 클래스 또는 부모 클래스로 표현
파생(Derived) 클래스
- 다른 클래스로부터 멤버를 물려받은 클래스
- Derieved 클래스 또는 자식 클래스로 표현
접근한정자 : Access Modifier
public : 공용, 외부에 공개
private : 전용, 내부에서만 사용
protected : 제한적인, 자식에게만 공개
internal : 어셈블리(Dll) 파일 내에서만 공개
오버라이드(Override) : 부모의 멤버를 자식에서 재(다시)정의 : 부모와 자식간의 멤버충돌
- 부모와 자식에서 아무런 키워드도 X : 인스턴스 생성시 사용한 클래스의 멤버
- 부모 X, 자식에는 new : 하위에서 새롭게 정의
- 부모 virtual, 자식에는 override : 제일 좋은 형태
- 부모 abstract, 자식에는 override
오버로드(Overload) : 메서드 다중 정의, 동일한 이름의 메서드를 여러 개 선언
ToString()메서드 오버라이드
- object 클래스에 정의되어 있는 ToString()메서드는 기본적으로 클래스의 이름값을 반환시켜준다. 또는 정수형과 같이 대표가 되는 값이 들어있는 경우는 그 값을 문자열로 변환해서 출력해준다.
- 내가 만든 클래스의 대표가 되는 속성 또는 값을 외부에 인스턴스명으로 사용해서 출력하고자 할 때에는 ToString() 메서드를 재정의(Override) 해서 사용해야 한다.
추상클래스(Abstract)
- 클래스 설계시 부모 클래스 역할을 하면서, 강제로 자식 클래스에게 특정 멤버명을 물려주고자 할때 정의
- 추상클래스는 멤버의 실제 내용을 구현하지 않고 자식 클래스에게 멤버를 구현
- 주로 선임이 추상클래스, 후임이 추상클래스를 상속받은 클래스 구현
인터페이스(Interface)
- 추상 클래스와 같이 다른 클래스에게 멤버명을 미리 강제로 사용토록 할 때
- 인터페이스는 멤버명만 갖는반면 추상클래스는 다른 멤버도 가질 수 있다.
- 인터페이스는 자동차로 따지면 전세계표준(ISO), 국내표준(ks마크)등의 의미를 가짐
- C#은 다중상속이 불가능하지만(C++은 가능) 인터페이스 다중 상속은 가능하다.
- 자동차 규격, 예를들어 배터리 충전
봉인클래스(Sealed):최종 클래스, 마지막 클래스
더이상 상속되지 않는 클래스
sealed 키워드를 붙여서 상속금지
Object Class : 최상위 클래스
인스턴스(Instance) : 클래스로부터 개체를 생성해내는 단계
다형성(Polymorphism) : 동일 개체를 호출하는 관점에 따라서 다른 일 수행
부모 클래스의 인스턴스 호출시와 자식 클래스의 인스턴스시 다름
오버라이드 == 다형성
Access Modifiers : 접근 한정자
Private(전용) : this 내에서만 공개
protected(제한적인 허용): 자식에게만 공개
public(고용) : 모두에게 멤버 공개
internal(어셈블리): DLL 파일내의 모든 멤버에게 공개
protected internal(제한적인 DLL): DLL에서의 상속관계에서만
Static과 Instance
Static : 정적 접근, 클래스로부터 객체를 생성하지 않고, 바로 사용
Instance : 메모리에 객체를 올린 후 사용, new 키워드 사용
---------------------------------------------------------------------------------------------
@@@ c# 프로그래밍 문법 추가
변수
Nullable 형식
int?
박싱과 언박싱
object형식으로 변수를 선언하지 않는 이유
var 키워드 : 암시적으로 형식화된 로컬 변수 : p442
연산자
is 연산자
as 연산자
?? 연산자
연산자오버로드/오버로딩 p224
함수
명령줄인수
배열
클래스 : 분할(partial)클래스 p174
인덱서 : 반복기(Iterator)
클래스설계
제네릭클래스 p391~403
---------------------------------------------------------------------------------------------
@@@ C#의 특징
1.X : 기본
2.0 : 제네릭
3.X : LINQ(언어 통합 쿼리) - 초기화자 (12장 p 442~462)
-익명형
-확장메서드 p462-483
-람다식
-LINQ : p471
쿼리식 : from where select
표준쿼리연산자 : Where().Sun()
---------------------------------------------------------------------------------------------
윈폼/웹폼
프로젝트 생성 > 하나 이상의 폼을 생성 > 해당 폼에 레이아웃에 맞게 컨트롤 등록
> 각각의 컨트롤 주요 속성 변경 > 클릭 또는 로드와 같은 이벤트 처리 > 실행 > 테스트 > 배포
'Study > C#' 카테고리의 다른 글
C# 윈도우즈 폼 만들기 (2) | 2011.10.26 |
---|---|
C# 콘솔 예제 만들어보기 (0) | 2011.10.26 |
C# 구성요소 (0) | 2011.10.26 |
닷넷 용어 정리 (0) | 2011.10.26 |
닷넷 구성요소 (0) | 2011.10.26 |