[swift] 다형성을 활용하여 유연한 코드를 작성하는 방법

다형성(polymorphism)은 객체 지향 프로그래밍 언어에서 사용되는 중요한 개념 중 하나입니다. 이를 통해 유연하고 재사용 가능한 코드를 작성할 수 있습니다. Swift 언어를 사용한 다형성에 대해 알아보고, 어떻게 유연한 코드를 작성할 수 있는지 살펴보겠습니다.

다형성이란?

다형성은 하나의 인터페이스나 추상 클래스를 통해 다양한 타입의 객체를 동일하게 다루는 개념입니다. 즉, 상속과 결합하여 여러 객체를 같은 타입으로 취급할 수 있습니다. 이를 통해 코드를 간결하게 유지하면서도 유연성을 확보할 수 있습니다.

Swift에서의 다형성 활용

Swift에서 타입을 정적으로 검사하고 확인하는 기능을 활용하여 다형성을 구현할 수 있습니다. 아래는 예제 코드를 통해 다형성의 활용을 설명합니다.

class Shape {
    func draw() {
        // 아무 동작도 하지 않음
    }
}

class Circle: Shape {
    override func draw() {
        print("원을 그립니다.")
    }
}

class Rectangle: Shape {
    override func draw() {
        print("사각형을 그립니다.")
    }
}

// 다형성을 활용한 draw 함수 호출
func drawShape(_ shape: Shape) {
    shape.draw()
}

let shapes: [Shape] = [Circle(), Rectangle()]

for shape in shapes {
    drawShape(shape)
}

위 코드에서 Shape 클래스는 draw 메서드를 가지고 있습니다. CircleRectangle 클래스는 이를 상속하고 재정의하여 각 도형을 그리는 동작을 구현합니다. 그리고 drawShape 함수를 통해 다양한 도형 객체를 받아들이고 각 객체의 draw 메서드를 호출합니다.

이를 통해 다형성을 활용하여 동일한 인터페이스를 가진 다른 객체를 하나의 타입으로 다룰 수 있습니다.

결론

다형성을 활용하면 코드의 유연성을 높일 수 있고, 인터페이스를 통일하여 재사용 가능한 코드를 작성할 수 있습니다. Swift에서는 상속과 메서드 재정의를 통해 다형성을 구현할 수 있으며, 이를 통해 객체 지향 프로그래밍의 장점을 최대화할 수 있습니다.

참고 문헌: Swift.org - The Swift Programming Language