[swift] 프로토콜의 사용 예시
프로토콜은 유연하고 재사용 가능한 코드를 작성하기 위한 중요한 도구입니다. 프로토콜을 사용하면 다른 유형의 객체 간에 특정한 동작을 공유할 수 있습니다. 이번에는 프로토콜의 사용 예시를 살펴보겠습니다.
프로토콜 정의
먼저, Shape
프로토콜을 정의해보겠습니다. 이 프로토콜은 기본적인 도형의 동작을 정의합니다.
protocol Shape {
var area: Double { get }
func draw()
}
위의 예제 코드에서 Shape
프로토콜은 area
속성과 draw()
메서드를 가지고 있습니다. 이제 이 프로토콜을 채택하는 구조체와 클래스를 작성해보겠습니다.
프로토콜 채택
다음은 Circle
구조체가 Shape
프로토콜을 채택하는 예시입니다.
struct Circle: Shape {
var radius: Double
var area: Double {
return Double.pi * radius * radius
}
func draw() {
print("Drawing a circle")
}
}
Circle
구조체에서 Shape
프로토콜의 요구사항을 모두 구현하고, area
와 draw()
를 각각 계산 속성과 메서드로 구현했습니다.
다음으로, Rectangle
클래스가 Shape
프로토콜을 채택하는 예시를 살펴보겠습니다.
class Rectangle: Shape {
var width: Double
var height: Double
var area: Double {
return width * height
}
func draw() {
print("Drawing a rectangle")
}
}
Rectangle
클래스 또한 Shape
프로토콜의 요구사항을 모두 구현하고 있습니다.
활용 예시
이제 이 두 객체를 사용해서 프로토콜의 유연성과 재사용성을 확인해볼 수 있습니다.
func printShapeDetails(_ shape: Shape) {
print("Area: \(shape.area)")
shape.draw()
}
let circle = Circle(radius: 5.0)
let rectangle = Rectangle(width: 3.0, height: 4.0)
printShapeDetails(circle)
printShapeDetails(rectangle)
위의 printShapeDetails
함수는 Shape
프로토콜을 준수하는 어떤 객체든지 출력할 수 있습니다. 이를 통해 코드의 유연성과 재사용성이 높아짐을 확인할 수 있습니다.
프로토콜은 객체 간의 상호작용을 표준화하고, 유연하고 재사용 가능한 코드를 작성하는 데 큰 도움이 됩니다.
참고 자료: Apple Developer Documentation - Protocols
이상으로 프로토콜의 사용 예시를 살펴보았습니다.