[c#] C# 다형성과 객체 지향 설계 원칙의 연결

C#은 객체 지향 프로그래밍 언어로, 다형성(polymorphism)은 객체 지향 설계의 중요한 개념 중 하나입니다. C#에서의 다형성은 객체 지향 설계 원칙을 따르는 코드 작성을 가능케 합니다.

다형성(Polymorphism)

다형성은 한 가지 개념이 여러 가지 형태를 가질 수 있는 특성을 뜻합니다. C#에서의 다형성은 두 가지 형태로 구현됩니다.

  1. 정적 다형성(static polymorphism): 메서드 오버로딩(method overloading)을 통해 구현됩니다. 같은 이름의 메서드지만 매개변수의 타입 또는 개수가 다른 경우를 의미합니다.

    class Calculator
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
           
        public double Add(double a, double b)
        {
            return a + b;
        }
    }
    
  2. 동적 다형성(dynamic polymorphism): 상속 및 인터페이스를 활용한 가상 메서드(polymorphic method)를 통해 구현됩니다. 같은 이름의 메서드지만 실제 실행될 때는 객체의 타입에 따라 다르게 동작합니다.

    interface IShape
    {
        double GetArea();
    }
       
    class Rectangle : IShape
    {
        public double Width { get; set; }
        public double Height { get; set; }
           
        public double GetArea()
        {
            return Width * Height;
        }
    }
       
    class Circle : IShape
    {
        public double Radius { get; set; }
           
        public double GetArea()
        {
            return Math.PI * Radius * Radius;
        }
    }
    

객체 지향 설계 원칙과의 연결

다형성은 객체 지향 설계의 여러 가지 원칙 중에서 개방-폐쇄 원칙(Open/Closed Principle, OCP)리스코프 치환 원칙(Liskov Substitution Principle, LSP)을 지원합니다.

이러한 객체 지향 설계 원칙을 준수하면서 다형성을 적절히 활용하면, 유연하고 확장 가능한 소프트웨어 시스템을 설계할 수 있습니다.

C#에서의 다형성은 객체 지향 설계 원칙을 준수하여 유연하고 확장 가능한 소프트웨어를 구축할 수 있도록 도와줍니다. 이는 좀 더 효율적이고 유지보수가 쉬운 코드를 작성할 수 있게 해줍니다.

참고 문헌: