[c#] 클래스의 캡슐화

C#은 객체지향 프로그래밍 언어로, 캡슐화는 그 중요한 특징 중 하나입니다. 캡슐화는 데이터와 함수를 하나로 묶어 외부에서의 직접적인 접근을 제한하는 것을 말합니다. 이를 통해 데이터의 무결성을 보장하고 객체의 상태를 안전하게 유지할 수 있습니다.

캡슐화는 접근 제한자 (access modifier)를 통해 구현됩니다. C#에서는 다음과 같은 네 가지 접근 제한자를 제공합니다.

  1. public: 어떤 클래스나 메서드에서든 접근 가능
  2. private: 정의한 클래스 내에서만 접근 가능
  3. protected: 상속받은 클래스 내에서 접근 가능
  4. internal: 같은 어셈블리 내에서만 접근 가능

다음은 캡슐화가 적용된 간단한 C# 클래스의 예시입니다.

public class Car
{
    private string _make;
    private string _model;
    private int _year;

    public string Make
    {
        get { return _make; }
        set { _make = value; }
    }

    public string Model
    {
        get { return _model; }
        set { _model = value; }
    }

    public int Year
    {
        get { return _year; }
        set
        {
            if (value > 1900)
            {
                _year = value;
            }
            else
            {
                throw new Exception("Invalid year");
            }
        }
    }
}

위 예시에서 Make, Model, Year 속성은 외부에서 접근 가능하지만, _make, _model, _year 필드는 private로 선언되어 외부에서의 직접적인 접근을 제한합니다.

캡슐화를 통해 클래스 내부의 데이터를 보호하고, 의도치 않은 변경으로부터 객체를 보호할 수 있습니다. 이를 통해 안정적이고 유지보수가 용이한 프로그램을 작성할 수 있습니다.

자세한 내용은 Microsoft C# 공식 문서를 참고하세요.