C#에서 객체란 무엇인가?
C#을 비롯한 모든 객체 지향 프로그래밍(OOP) 언어에는 객체(Object)와 클래스(Class)라는 핵심 개념이 존재합니다. 객체는 실제 세계에 존재하는 실체(entity)를 표현하며, 클래스의 인스턴스(instance)라고 부릅니다. 쉽게 말해 클래스는 '설계도'이고, 객체는 그 설계도를 바탕으로 실제로 만들어진 '물건'이라고 이해하면 됩니다.
클래스 내부에 선언된 변수나 메서드 같은 멤버(member)에 접근하려면 반드시 객체를 통해야 합니다. 이때 사용하는 것이 바로 마침표(.) 연산자입니다. 마침표 연산자는 객체의 이름과 멤버의 이름을 연결해 주는 역할을 합니다.
객체 생성과 멤버 접근
다음과 같이 new 키워드를 사용해 객체를 생성할 수 있습니다.
Box b1 = new Box();
위 코드에서 b1이 바로 Box 클래스의 객체입니다. 이 객체를 활용하면 클래스의 멤버 변수에 아래와 같이 접근할 수 있습니다.
b1.height = 7.0;
멤버 함수(메서드) 역시 객체를 통해 호출할 수 있습니다.
b1.getVolume();
C# 객체와 클래스 예제
아래 예제는 C#에서 객체와 클래스가 어떻게 함께 동작하는지 보여줍니다. Box 클래스를 정의하고, 두 개의 객체(Box1, Box2)를 만들어 각각의 부피(volume)를 계산합니다.
예제 코드
using System;
namespace BoxApplication {
class Box {
private double length; // 상자의 길이
private double breadth; // 상자의 너비
private double height; // 상자의 높이
public void setLength(double len) {
length = len;
}
public void setBreadth(double bre) {
breadth = bre;
}
public void setHeight(double hei) {
height = hei;
}
public double getVolume() {
return length * breadth * height;
}
}
class Boxtester {
static void Main(string[] args) {
// 두 개의 객체 생성
Box Box1 = new Box(); // Box 타입의 Box1 선언
Box Box2 = new Box();
double volume;
// 객체를 통해 멤버 함수 호출
Box1.setLength(6.0);
Box1.setBreadth(7.0);
Box1.setHeight(5.0);
// Box2 사양 설정
Box2.setLength(12.0);
Box2.setBreadth(13.0);
Box2.setHeight(10.0);
// Box1의 부피 계산
volume = Box1.getVolume();
Console.WriteLine("Volume of Box1 : {0}", volume);
// Box2의 부피 계산
volume = Box2.getVolume();
Console.WriteLine("Volume of Box2 : {0}", volume);
Console.ReadKey();
}
}
}실행 결과
Volume of Box1 : 210 Volume of Box2 : 1560
핵심 정리
- 객체(Object)는 클래스의 인스턴스이며, 실제 세계의 실체를 프로그램 안에서 표현한 것입니다.
- 클래스(Class)는 객체를 만들기 위한 설계도 역할을 하며, 데이터(필드)와 동작(메서드)을 함께 정의합니다.
- 객체의 멤버에 접근하려면 마침표(.) 연산자를 사용합니다.
- new 키워드를 사용하면 클래스로부터 새로운 객체를 메모리에 생성할 수 있습니다.
이처럼 C#에서는 하나의 클래스로부터 여러 개의 독립적인 객체를 만들 수 있으며, 각 객체는 서로 다른 값을 가질 수 있습니다. 위 예제에서 Box1과 Box2가 각각 다른 크기와 부피를 가진 것처럼 말입니다.