C#에서 클래스(class)는 데이터 타입의 설계도라고 할 수 있습니다. 이 설계도를 바탕으로 만들어진 실체가 바로 객체(object)이며, 객체는 곧 클래스의 인스턴스(instance)입니다. 또한 클래스를 구성하는 메서드와 변수들은 멤버(member)라고 부릅니다.
C# 클래스의 일반적인 구조
다음은 C#에서 클래스를 선언할 때 사용되는 기본 형식입니다.
<access specifier> class class_name {
// 멤버 변수
<access specifier> <data type> variable1;
<access specifier> <data type> variable2;
...
<access specifier> <data type> variableN;
// 멤버 메서드
<access specifier> <return type> method1(parameter_list) {
// 메서드 본문
}
<access specifier> <return type> method2(parameter_list) {
// 메서드 본문
}
...
<access specifier> <return type> methodN(parameter_list) {
// 메서드 본문
}
}여기서 access specifier(접근 지정자)는 public, private 등 외부에서 해당 멤버에 접근할 수 있는 범위를 결정하며, data type은 변수의 자료형을 의미합니다.
클래스 생성 예제
이제 실제로 C#에서 클래스를 만들고 활용하는 방법을 예제를 통해 살펴보겠습니다. 아래 코드는 상자(Box)의 크기를 저장하고 부피를 계산하는 프로그램입니다.
using System;
namespace Demo {
class Box {
public double length; // 상자의 길이
public double breadth; // 상자의 너비
public double height; // 상자의 높이
}
class Boxtester {
static void Main(string[] args) {
Box Box1 = new Box(); // Box 타입의 Box1 선언
Box Box2 = new Box(); // Box 타입의 Box2 선언
double volume = 0.0; // 상자의 부피를 저장할 변수
// 첫 번째 상자(Box1)의 크기 설정
Box1.height = 5.0;
Box1.length = 6.0;
Box1.breadth = 7.0;
// 두 번째 상자(Box2)의 크기 설정
Box2.height = 10.0;
Box2.length = 12.0;
Box2.breadth = 13.0;
// Box1의 부피 계산
volume = Box1.height * Box1.length * Box1.breadth;
Console.WriteLine("Volume of Box1 : {0}", volume);
// Box2의 부피 계산
volume = Box2.height * Box2.length * Box2.breadth;
Console.WriteLine("Volume of Box2 : {0}", volume);
Console.ReadKey();
}
}
}
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Volume of Box1 : 210
Volume of Box2 : 1560
예제 해설
이 예제에서 Box 클래스는 길이(length), 너비(breadth), 높이(height)라는 세 개의 멤버 변수를 가지고 있습니다. Main 메서드 안에서 new 키워드를 사용해 Box1과 Box2라는 두 개의 객체(인스턴스)를 생성한 후, 각 객체마다 서로 다른 값을 할당했습니다.
같은 클래스로부터 만들어졌지만 각 객체는 독립적인 데이터를 가질 수 있다는 점이 핵심입니다. 즉, 하나의 클래스는 여러 개의 서로 다른 객체를 만들어내는 틀 역할을 하며, 이것이 C# 객체지향 프로그래밍의 기본 원리입니다.