C# 용어 정리

Study/C# 2011. 10. 26. 18:56

프로그래밍 언어(절차지향)
 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
Posted by 코딩하는 야구쟁이
,