프로그래밍/C#

객체 지향 프로그래밍(OOP)과 C#의 클래스 및 객체 이해하기

shimdh 2025. 8. 24. 10:41
728x90

객체 지향 프로그래밍(OOP)은 소프트웨어 개발에서 필수적인 패러다임으로, 데이터를 캡슐화하고 행동을 함께 묶어 모듈화되고 재사용 가능한 코드를 작성할 수 있게 합니다. C#에서는 클래스와 객체가 OOP의 기본 구성 요소로 작용합니다. 이번 포스트에서는 클래스와 객체의 개념을 깊이 있게 탐구하고, 이를 통해 어떻게 더 나은 소프트웨어를 개발할 수 있는지 알아보겠습니다.

클래스 이해하기

클래스는 객체를 생성하기 위한 청사진 또는 템플릿입니다. 클래스는 객체가 가질 수 있는 속성과 메서드를 정의합니다.

클래스의 구성 요소

  • 속성: 객체의 상태나 특성을 나타냅니다.
  • 메서드: 속성에 대해 수행할 수 있는 동작을 정의합니다.

예시: Car 클래스

public class Car 
{
    // 속성
    public string Make { get; set; }
    public string Model { get; set; }
    public int Year { get; set; }

    // 메서드
    public void StartEngine() 
    {
        Console.WriteLine("The engine has started.");
    }
}

이 예시에서 Car 클래스는 Make, Model, Year라는 세 가지 속성을 가지고 있으며, StartEngine()이라는 메서드를 통해 자동차의 엔진을 시동하는 것을 시뮬레이션합니다.

728x90

객체 생성하기

객체는 클래스의 인스턴스입니다. 클래스를 정의한 후에는 그 청사진을 기반으로 여러 객체를 생성할 수 있습니다.

객체 생성 예시

Car myCar = new Car();
myCar.Make = "Toyota";
myCar.Model = "Corolla";
myCar.Year = 2020;

myCar.StartEngine(); // 출력: The engine has started.

위의 코드에서는 Car 클래스에서 myCar라는 인스턴스를 생성하고, 속성에 값을 할당한 후 메서드를 호출하여 엔진을 시동했습니다.

캡슐화

캡슐화는 OOP의 핵심 원칙 중 하나로, 데이터와 메서드를 단일 단위로 묶는 것입니다. 이는 데이터 무결성을 보호하는 데 도움이 됩니다.

접근 제한자

  • Public: 어디서나 접근 가능.
  • Private: 정의된 클래스 내에서만 접근 가능.

비공개 필드 예시

public class BankAccount 
{
    private decimal balance;

    public void Deposit(decimal amount) 
    {
        if(amount > 0)
            balance += amount;
        else
            Console.WriteLine("Deposit amount must be positive.");
    }

    public decimal GetBalance() 
    {
        return balance;
    }
}

여기서 balance 필드는 비공개로 설정되어 있으며, Deposit() 메서드를 통해서만 안전하게 상호작용할 수 있습니다.

생성자

생성자는 클래스의 인스턴스를 생성할 때 호출되는 특별한 메서드로, 객체를 생성할 때 속성 값을 초기화할 수 있습니다.

생성자 예시

public Car(string make, string model, int year)
{
   Make = make;
   Model = model;
   Year = year;
}

// 생성자 사용
var anotherCar = new Car("Honda", "Civic", 2019);

이렇게 하면 새로운 자동차 객체를 생성할 때마다 즉시 정의된 값으로 시작할 수 있습니다.

결론

클래스와 객체를 이해하는 것은 C#에서 객체 지향 프로그래밍을 마스터하기 위한 기초를 형성합니다. 이러한 개념을 효과적으로 활용함으로써, 캡슐화와 함께 더 조직적이고 유지보수 가능한 코드베이스를 구축할 수 있으며, 나중에 상속이나 다형성과 같은 중급 C# 주제로 깊이 들어갈 수 있습니다.

728x90