객체 인스턴스화 및 멤버 접근

클래스를 정의한 후에는 바로 조작할 수 없습니다. 클래스는 개념적으로 추상적이기 때문에, 실제 작업을 수행하기 위해서는 객체를 생성해야 합니다. 이 과정을 객체의 인스턴스화라고 부릅니다.

이번 절에서는 클래스의 인스턴스화 방법과 이를 통해 객체의 멤버에 접근하는 방법을 설명하겠습니다.

먼저, 인스턴스화란 클래스로부터 실제 메모리 공간을 할당받은 객체를 만드는 것을 의미합니다. 예를 들어, 자동차 설계도면만 가지고는 실제로 차량을 운행할 수 없듯이, 프로그래밍에서도 설계된 클래스를 기반으로 객체를 만들어야 합니다. 객체는 new 키워드를 사용하여 생성됩니다.

다음은 특정 회사에서 두 가지 제품인 XPhone과 MPhone을 생산한다고 가정한 코드입니다.

using System;

namespace ObjectInstanceExample
{
    class Product
    {
        public string Name;         // 제품 이름
        public string Category;     // 카테고리
        public double Price;       // 가격
        public int Stock;          // 재고
        public string Description; // 설명

        public void DisplayInfo()
        {
            Console.WriteLine("제품 정보");
            Console.WriteLine("=====================");
            Console.WriteLine($"제품 이름: {Name}");
            Console.WriteLine($"카테고리: {Category}");
            Console.WriteLine($"가격: {Price}원");
            Console.WriteLine($"설명: {Description}");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            // XPhone 인스턴스 생성
            Product xphone = new Product();
            xphone.Name = "XPhone 10";
            xphone.Category = "스마트폰";
            xphone.Price = 2999;
            xphone.Stock = 100000;
            xphone.Description = "최신 플래그십 스마트폰, 전체 화면 촬영 전문";

            // MPhone 인스턴스 생성
            Product mphone = new Product();
            mphone.Name = "MPhone 6X";
            mphone.Category = "스마트폰";
            mphone.Price = 9999;
            mphone.Stock = 100000;
            mphone.Description = "일반적인 스마트폰";

            xphone.DisplayInfo();
            mphone.DisplayInfo();

            // 필드 접근 및 수정 예시
            if (xphone.Stock - 10 > 0)
            {
                Console.WriteLine($"{xphone.Name} 10대 판매 완료! 총 금액: {xphone.Price * 10}원");
                xphone.Stock -= 10;
                Console.WriteLine($"현재 재고: {xphone.Stock}");
            }
            else
            {
                Console.WriteLine($"{xphone.Name}의 재고가 부족합니다.");
            }
        }
    }
}

위 코드에서 보듯이, Product 클래스로부터 xphonemphone이라는 두 개의 객체를 생성하고, 각각의 속성에 값을 할당했습니다. 이후 DisplayInfo 메서드를 호출하여 제품 정보를 출력하였습니다.

또한 클래스 내부에서는 멤버 변수를 직접 참조할 수 있지만, 외부에서는 해당 변수가 public으로 선언되어 있어야 접근 가능합니다. 기본적으로 변수는 private 상태로 설정되며, 이를 명시적으로 public으로 변경해야 외부에서도 접근할 수 있습니다.

마지막으로, 메서드 호출 역시 객체를 통해 이루어집니다. 형식은 객체.메서드명(파라미터)입니다. 메서드 또한 외부에서 호출하려면 public으로 지정되어야 합니다.

태그: C# OOP ObjectInstantiation

7월 9일 16:01에 게시됨