Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 새 개체(객체)는 어떻게 생성되나요? 기본 개념과 예제로 배우기

C# 객체와 클래스의 기본 개념

다른 객체 지향 프로그래밍 언어와 마찬가지로 C# 역시 객체(Object)와 클래스(Class)라는 핵심 개념을 중심으로 동작합니다. 객체는 현실 세계에 존재하는 실체를 표현하며, 클래스의 인스턴스(instance)라고 부릅니다. 쉽게 말해 클래스가 '설계도'라면, 객체는 그 설계도를 바탕으로 실제로 만들어진 '물건'이라고 이해하면 됩니다.

객체를 사용하면 클래스 내부에 정의된 멤버 변수와 메서드에 접근할 수 있습니다.

점(.) 연산자로 클래스 멤버에 접근하기

클래스 멤버에 접근하려면 객체 이름 뒤에 점(.) 연산자를 붙여야 합니다. 점 연산자는 객체 이름과 멤버 이름을 연결하는 역할을 하며, 다음과 같은 형식으로 사용합니다.

Box Box1 = new Box();

위 코드에서 Box1이 바로 새롭게 생성된 객체입니다. 이 객체를 통해 클래스의 멤버 변수에 접근할 수 있습니다.

Box1.height = 7.0;

멤버 함수(메서드)를 호출할 때도 같은 방식을 사용합니다.

Box1.getVolume();

new 연산자의 역할

C#에서 객체 생성은 new 키워드를 통해 이루어집니다. new 연산자는 다음 두 가지 작업을 수행합니다.

  • 힙(heap) 메모리에 객체를 저장할 공간을 할당합니다.
  • 클래스의 생성자를 호출하여 객체를 초기화합니다.

즉, Box Box1 = new Box(); 구문은 'Box 타입의 참조 변수 Box1을 선언하고, new 연산자로 새로운 Box 객체를 생성해 그 주소를 Box1에 할당한다'는 의미입니다.

예제: 객체와 클래스의 동작 살펴보기

아래 예제는 C#에서 객체와 클래스가 어떻게 함께 작동하는지 보여줍니다. 두 개의 Box 객체를 생성하고, 각각의 크기를 설정한 뒤 부피를 계산합니다.

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

코드 해설

Box1은 길이 6.0, 너비 7.0, 높이 5.0으로 설정되었으므로 부피는 6 × 7 × 5 = 210이 됩니다. 마찬가지로 Box2는 12 × 13 × 10 = 1560입니다.

이처럼 하나의 클래스로부터 서로 다른 상태(멤버 변수 값)를 가진 여러 객체를 독립적으로 생성할 수 있다는 것이 객체 지향 프로그래밍의 핵심 장점입니다.