오늘은 추상화클래스를 활용해서 사측연산이 가능한 프로그램을 구현 해봤습니다.
추상화 클래스는 코드 재사용성이 좋습니다 또한 코드의 일관성유지가 용이합니다.
protocol Operation {
func performOperation(a: Double, b: Double) -> Double
}
Operation 라는 프로토콜을 생성해줍니다. 이것은 나중에 사측연산에 필요한 기본값을 정의 해주는 작업입니다.
코드를 보면 파라미터 a, b가 있습니다 a, b의 타입은 Double이고 반환 타입 또한 Double입니다.
이를 통해 추후에 Operation 프로토콜을 상송받은 클래스가 performOperation 함수를 준수할 수 있게 해서 코드를 재사용성을 높입니다.
추상화 프로토콜을 활용해 추상적이지 않고 구체적으로 무엇을 하는 코드인지 정해줄 것입니다.
class Add: Operation {
func performOperation(a: Double, b: Double) -> Double {
return a + b
}
}
Add 클래스는 Operation 을 상속받습니다 파미리터 a, b의 값을 받아와서 return 시 연산을 진행 시켜줍니다.
위에서 만든 구체적인 연산 클래스를 활용하여 계산기 클래스를 만들어 보겠습니다.
class Cal {
var operation: Operation
init(operation: Operation) {
self.operation = operation
}
func calculate(a: Double, b: Double) -> Double {
return operation.performOperation(a: a, b: b)
}
}
인니셜라이즈의 역할은 그저 인스턴스의 첫 사용을 위해 초기화 하는것 뿐입니다.
init(operation: Operation)
이 부분은 추후에 사용할 객체를 실행하기 위해 초기설정을 해주는 겁니다.