본문 바로가기
프로그래밍/C#.net

클래스

by 건우아빠유리남편 2009. 8. 24.
반응형

■클래스와 인스턴스

오브젝트를 만들때, 먼저 설계도가 필요하다.

내부가 어떤구조로 되어있는지, 외부에거 어떤 조작이 되는지를 결정하게 된다.

이런 오브젝트 설계도를 클래스(class)라고 한다.

 

이것에 대해, 설계도를 가지고 만들어진 오브젝트의 실체를 인스턴스(instance)라고 한다

 

■클래스 정의

class 클래스명

{

    클래스 실제 부품구현

}

 

■클래스 이용

클래스를 사용하기 위해서는 인스테스를 작성해야 된다. 

 

1.인스턴스를 격납하는 변수를 정의한다.

클래스명 변수명;

 

2.new 키워드로 인스턴스를 작성해서, 준비한 변수를 격납한다.

변수 = new 클래스명();

 

그리고, 변수뒤에 점(.)으로 나누어서 멤버명을 쓰면 멤버변수와 메소드를 사용할수 있다.

변수이름.멤버이름

 

■클래스의 분할정의

 

ver.2.0

C# 2.0에서는 클래스를 정의할때 partial 키워드를 부쳐서, 클래스정의를 분할할수 있게되었다.

 

예를 들면

partial class Complex
{
  public double re;
  public double im;
}


partial class Complex
{
  public double Abs()
  {
    return Math.Sqrt(re * re + im * im);
  }
}


 

ver.3.0

C# 3.0에서 partial method라는 기능이 추가되었다.

partial class내부에서, 멤버에 partial을 부쳐서 메소드의 선언과 정의를 나누는 것이다.

정의사양과 제한항목은 아래와 같다.

- partial을 부쳐서 메소드를 선언

- 반드시 partial class내부여야 한다.

- private 여야 한다.

- 반환값은 void 이외는 불가

- 인수는 자유롭게 취할수 있다. ref,this,params도 이용가능. out인수는 불가

- 클래스메소드(static)에도 이스턴스메소드(비 static)에도 가능.

 

예를 들면

partial class Program
{
  static void Main(string[] args)
  {
    OnBeginProgram();
    Console.Write("program body\n");
    OnEndProgram();
  }
  static partial void OnBeginProgram();
  static partial void OnEndProgram();
}

 

partial class Program
{
  static partial void OnBeginProgram()
  {
    Console.Write("check pre-condition\n");
  }
  static partial void OnEndProgram()
  {
    Console.Write("check post-condition\n");
  }
}

 

■익명형

ver.3.0

C# 3.0에서는 익명 형 (anonymous type)을 작성할 수 있게 되었다.

 

예를 들어

var x = new { FamilyName= "이", FirstName= "효리" };

 

위의 코드라면, 자동적으로, 아래와 같은 모양이 생성되어진다.

 

// 이 __Anonymous 이라는 이름은 프로그래머가 참조할수 있는것은 아니다.

 class __Anonymous1
{
  private string f1;
  private string f2;

  public string FamilyName
  {
    get { return this.f1}
    set { this.f1 = value}
  };
  public string FirstName
  {
    get { return this.f2}
    set { this.f2 = value}
  };
}

 

이 기능은 LINQ와 함께 이용하면 진가를 발휘한다.

혼자 사용되는 경우는 그렇게 많지 않을것으로 생각되고, 예를 들어 아래와 같이 사용할수 있다.

 

var rectangle = new { Width = 2, Height = 3 };

Console.Write(

                     "폭 : {0}\n 높이: {1}\n 면적: {2}\n"

                     rectangle.Width, 

                     rectangle.Height,
                     rectangle.Width * rectangle.Height

                    );

 

참조

http://ufcpp.net/study/csharp/index.html#seealso 


반응형

'프로그래밍 > C#.net' 카테고리의 다른 글

은폐  (0) 2009.08.24
Constructor  (0) 2009.08.24
작업표시줄에 App 숨기는 꽁수  (0) 2009.03.24
바탕화면을 부모로 가지기  (0) 2009.03.24
FormBorder.None 에 간단하게 드래그이벤트 추가 코드  (0) 2009.03.24

댓글