본문 바로가기

워크/C# 1.0

객체 지향 프로그래밍(OOP)

객체 지향 프로그래밍(OOP)의 핵심 개념인 클래스, 객체, 상속, 다형성, 캡슐화에 대한 간단한 예시를 C#으로 보여드리겠습니다.

1. 클래스와 객체

클래스는 설계도에 비유할 수 있고, 객체는 그 설계도를 바탕으로 만들어진 실체를 의미합니다.

 

public class Dog
{
    public string Name { get; set; }

    public void Bark()
    {
        Console.WriteLine($"{Name}가 멍멍 짖습니다.");
    }
}

// 객체 생성
Dog myDog = new Dog();
myDog.Name = "맥스";
myDog.Bark(); // "맥스가 멍멍 짖습니다." 출력

2. 상속

클래스 간에 코드를 재사용하고 확장할 수 있도록 하는 개념입니다.

 

public class Animal
{
    public string Name { get; set; }

    public void Eat()
    {
        Console.WriteLine($"{Name}가 먹이를 먹습니다.");
    }
}

public class Cat : Animal
{
    public void Meow()
    {
        Console.WriteLine("야옹");
    }
}

Cat myCat = new Cat();
myCat.Name = "루시";
myCat.Eat();  // "루시가 먹이를 먹습니다." 출력
myCat.Meow(); // "야옹" 출력

3. 다형성

하나의 인터페이스나 클래스를 여러 방식으로 동작하게 할 수 있는 능력입니다.

public class Bird : Animal
{
    public void Sing()
    {
        Console.WriteLine("짹짹");
    }
}

void MakeAnimalSound(Animal animal)
{
    if (animal is Cat)
    {
        (animal as Cat).Meow();
    }
    else if (animal is Bird)
    {
        (animal as Bird).Sing();
    }
}

MakeAnimalSound(myCat);  // "야옹" 출력

4. 캡슐화

클래스 내부의 데이터나 상태를 숨기고, 그 상태를 변경할 수 있는 특정 메서드만 외부에 노출하는 것입니다.

public class Car
{
    private int fuel;

    public int Fuel
    {
        get { return fuel; }
        set
        {
            if (value >= 0)
            {
                fuel = value;
            }
        }
    }

    public void Drive()
    {
        if (fuel > 0)
        {
            fuel -= 10;
            Console.WriteLine("차가 주행합니다.");
        }
        else
        {
            Console.WriteLine("연료가 부족합니다.");
        }
    }
}

Car myCar = new Car();
myCar.Fuel = 50;
myCar.Drive();

이렇게 객체 지향 프로그래밍의 기본 개념들은 코드의 재사용성, 확장성, 유지 보수의 용이성 등 많은 이점을 가져다 줍니다.

'워크 > C# 1.0' 카테고리의 다른 글

속성(Properties) 및 인덱서(Indexers)  (0) 2023.08.24
통합된 Exception Handling  (0) 2023.08.24
Garbage Collection  (0) 2023.08.24
Type-Safe 언어  (0) 2023.08.24
C# 1.0의 주요 특징: 초창기의 혁신  (0) 2023.08.24