C#

(C#) 인터페이스 예제: IShape

코딩ABC 2023. 7. 25. 15:39
반응형

다음 예제는 인터페이스(interface)를 이용한 간단한 C# 코드입니다.

인터페이스를 상속받는 클래스에서는 반드시 인터페이스에서 선언 메서드나 속성을 정의해야 합니다.

 

IShape 인터페이스를 다음과 같이 정의했습니다.

    public interface IShape
    {
        double CalculateArea();        // 넓이 계산
        double CalculatePerimeter();   // 둘레 계산
    }

 

인터페이스를 상속받는 Circle과 Rectangle 클래스는 다음과 같이 정의했습니다.

    public class Circle : IShape
    {
        public double Radius { get; set; }

        public Circle(double radius)
        {
            Radius = radius;
        }

        public double CalculateArea()
        {
            return Math.PI * Radius * Radius;
        }

        public double CalculatePerimeter()
        {
            return 2 * Math.PI * Radius;
        }
    }

    public class Rectangle : IShape
    {
        public double Width { get; set; }
        public double Height { get; set; }

        public Rectangle(double width, double height)
        {
            Width = width;
            Height = height;
        }

        public double CalculateArea()
        {
            return Width * Height;
        }

        public double CalculatePerimeter()
        {
            return 2 * (Width + Height);
        }
    }

Main 메서드에서는 위에서 정의한 클래스를 다음과 같이 사용할 수 있습니다.

        static void Main(string[] args)
        {
            IShape circle = new Circle(5);
            Console.WriteLine("Circle Area: " + circle.CalculateArea());
            Console.WriteLine("Circle Perimeter: " + circle.CalculatePerimeter());

            IShape rectangle = new Rectangle(4, 6);
            Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
            Console.WriteLine("Rectangle Perimeter: " + rectangle.CalculatePerimeter());
        }

 

전체 소스는 다음과 같습니다.

콘솔 응용프로그램으로 작성했습니다.

 

IShape.cs

using System;

namespace ConsoleApp1
{
    public interface IShape
    {
        double CalculateArea();
        double CalculatePerimeter();
    }

    // Implement the interface in a class
    public class Circle : IShape
    {
        public double Radius { get; set; }

        public Circle(double radius)
        {
            Radius = radius;
        }

        public double CalculateArea()
        {
            return Math.PI * Radius * Radius;
        }

        public double CalculatePerimeter()
        {
            return 2 * Math.PI * Radius;
        }
    }

    public class Rectangle : IShape
    {
        public double Width { get; set; }
        public double Height { get; set; }

        public Rectangle(double width, double height)
        {
            Width = width;
            Height = height;
        }

        public double CalculateArea()
        {
            return Width * Height;
        }

        public double CalculatePerimeter()
        {
            return 2 * (Width + Height);
        }
    }
}

 

Program.cs

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            IShape circle = new Circle(5);
            Console.WriteLine("Circle Area: " + circle.CalculateArea());
            Console.WriteLine("Circle Perimeter: " + circle.CalculatePerimeter());

            IShape rectangle = new Rectangle(4, 6);
            Console.WriteLine("Rectangle Area: " + rectangle.CalculateArea());
            Console.WriteLine("Rectangle Perimeter: " + rectangle.CalculatePerimeter());
        }
    }
}

 

출력된 결과입니다.

(C#) 인터페이스 예제: IShape

반응형