Chapter 5 - 클래스 기초

C#/Programming C# 2012/01/10 14:33
* 개요 설명
우리가 클래스를 정의하는 것은 하나의 데이터 타입을 만드는 것과 같습니다. 그래서 클래스를 사용자 정의 데이터 타입(user-defined data type)이라고 하는 것이지요.

클래스는 클래스명 앞에 'class'라고 하는 키워드를 사용하여 정의합니다.
class MyClass {
	.....
}

클래스는 생성자(constructor), 소멸자(destructor), 상수(constant), 필드(field), 메서드(method), 속성(property), 인덱서(indextor), 연산자(operator)등을 멤버로 포함할 수 있습니다.

C# 언어에서는 클래스의 특성(attribute)을 필드(field)로 구현합니다.
class MyClass {
	private int myField // 필드 멤버
}
또한, 속성(property)으로 특성을 구현할 수도 있습니다.
class MyClass {
	public int MyProperty { // 속성 멤버
		set {
			// 속성 설정 구현 코드
		}
		get {
			// 속성값 반환 구현 코드
		}
	}
}

또한, 클래스의 행위(behavior)는 메서드(method)로 구현합니다.
class MyClass {
	public void MyMethod() { // 메서드 멤버
		// 메서드 구현코드
	}
}
클래스를 정의한 후에는 new 연산자를 사용하여 객체 즉, 클래스의 인스턴스(instance)를 생성할 수 있습니다. 이때 생성된 인스턴스는 힙(heap) 메모리에 저장됩니다.
MyClass myclass = new MyClass();
new 연산자가 호출될 때 해당 클래스의 생성자(constructor)가 호출됩니다. 생성자는 클래스명과 같은 이름의 반환값이 없는 메서드로 , 주로 멤버 필드를 초기화 하기 위해 정의합니다.
class MyClass {
	public MyClass() {	// 생성자
		// 멤버 필드 초기화 코드
	}
}
인수가 있는 생성자도 있을 수 있으며, 여러 개의 생성자를 동시에 정의할 수도 있습니다.
class MyClass {
	public MyClass() {	// 생성자
		// 멤버 필드 초기화 코드
	}
	public MyClass(int param) { // 인수가 한 개인 생성자
		// 멤버 필드 초기화 코드
	}
}

만약 클래스에 생성자를 정의하지 않았다면 C# 컴파일러는 인수가 없는 디폴트 생성자(default constructor)를 자동적으로 생성해 줍니다.

new 연산자를 사용하여 클래스의 인스턴스를 생성한 후에는 참조 변수를 통하여 해당 클래스에 공개(public)로 정의된 멤버를 호출할 수 있습니다. 공개 멤버(public)이란 public 키워드를 사용하여 정의합니다. 만약 비공개(private)로 정의함으로써 클래스 외부의 다른 클래스 외부의 다른 클래스의 객체에서 접근할 수 없도록 할 수 있습니다. 

사용자 정의 데이터 타입을 정의하는데 구조체(structure)를 사용할 수도 있습니다. 구조체는 struct 키워드를 사용하여 정의한다. 구조체는 값 타입이기 때문에 new 연산자를 사용하여 인스턴스를 생성하지 않고 단순히 구조체 변수를 정의합니다. 이때 스택(stack) 메모리에 할당합니다.
struct Point {
	public int x;
	public int y;
}


Point pt;
pt.x = 20;
pt.y = 20;
열거형(enumeration)이란 열거자(enumerator)란 이름이 부여된 일력의 정수 상수로 구성되는 데이터 타입니다. 열거형의 디폴트 데이터 타입은 int 입니다. 필요하다면 열거형의 데이터 타입을 바꿀 수도 있습니다. 이때 char 데이터 타입을 제외한 다른 정수 타입만 가능합니다.
enum WeekDay {Mon, Tue, Wed, Thu, Fri, Sat, Sun}
네임스페이스(namespace)는 영역을 구분하는데 사용합니다.
namespace MyNameSpace {
	// 네임스페이스 영역에 속해있는 타입정의
}
네임스페이스 안에는 클래스(class), 인터페이스(interface), 구조체(struct), 열거형(enum), 위임(delegate) 타입이나 다른 네임스페이스가 포함될 수 있습니다.
namespace MyNameSpace {
	class MyClass {
		// 멤버 추가
	}
}
다른 네임스페이스에 포함된 클래스에 접근하기 위해서는, 클래스명 앞에 네임스페이스명을 지정하고 구분자(.)를 붙입니다.
MyNameSpace.MyClass myclass = new MyNameSpace.MyClass();

또는, using 키워드를 사용하여 해당 네임스페이스를 사용할 것임을 선언한 후 네임스페이스를 지정하지 않고 해당 네임스페이스에 포함된 클래스에 접근할 수 있습니다.
using MyNameSpace;
MyClass myclass = new MyClass();
저작자 표시
Trackback 0 : Comment 0
◀ PREV : [1] : [2] : [3] : [4] : [5] : ... [133] : NEXT ▶