본문 바로가기

iOS (스파르타)

계산기 과제 해설영상과 비교하기 Lv. 4

선택 구현 기능 (힌트 : 추상화)

  • [ ] Lv4
    • [ ] AbstractOperation라는 추상화된 클래스를 만들기
    • [ ] 기존에 구현한 AddOperation(더하기), SubtractOperation(빼기), MultiplyOperation(곱하기), DivideOperation(나누기) 클래스들과 관계를 맺고 Calculator 클래스의 내부 코드를 변경
    • [ ] 스위프트의 어떤 문법을 이용하여 추상화할 수 있을지 생각해 봅시다
  • Lv3 와 비교해서 어떠한 점이 개선 되었는지 스스로 생각해 봅니다.
    • hint. 클래스간의 결합도, 의존성(의존성역전원칙)

추상화된 클래스.. 일단 무슨말인지도 잘 모르고.. 클래스 결합도랑 의존성 관련해서 모르겠어서

들여다 보기만하고 시도는 못했었던 레벨4 ㅎ

 

해설영상에서는 일단 '연산을 한다'는 것을 주로 보고 추상화된 클래스를 만들어 주었다.

빨간버튼이 뜬거는 옵셔널값이 아닐때 nil리턴 때문?인거같은데..

 

 

 

내 Lv3 코드에 Lv4 적용을 시켜보았다

 

나도 operation?.operate 이부분에서 빨간 버튼이 떴고

티피한테 물어봤다.

nil 값이 발생할 때 대체 값을 제공해야해서 그런게 맞는듯하다

Calculator 클래스의 operate 메서드에서 operation이 nil일 경우를 처리하기 위해서는

return Double.nan 을 사용해주는 경우도 있었고,

?? 연산자를 사용해 기본값을 반환하게 하는 경우도 있었다.

 

Double.nan 은 Not-a-Number의 약자로, 부동소수점 연산에서 유효하지 않거나 정의되지 않은 값을 나타내기 위해 사용된다.

나중에 연산 결과를 검증하고 오류를 처리하는데 유용하게 쓰이는 코드였다.

 

Double.nan.을 사용하는 것은 연산이 실패했음을 나타내는 방법 중 하나이므로 꼭 Double.nan을 사용할 필요는 없다.

대신에, 예외를 던지거나 기본 값을 반환하는 등 다양한 방법을 사용할 수 있고

nil을 반환하거나, 특정 에러 메세지를 출력하고 0을 반환하는 방식으로 처리할 수도 있다.

 

 

 

이후 해설 설명에서 protocol을 이용하는 방법도 알려주셨는데

아직 그정도 레벨이 아니라 강의만 듣고 따로 내꺼에 적용해보지는 않았다!

 

근데 보니까 나 빼기 이름지정을.. 영문자 하나 빼놓고 했더라 ㅋㅋㅋㅋ 아휴,,

 

'iOS (스파르타)' 카테고리의 다른 글

공부 관련 사이트,, ~ing  (0) 2024.06.12
링크드 리스트  (0) 2024.06.11
계산기 과제 해설 영상과 비교하기  (2) 2024.06.10
GitHub Repository 삭제하기  (0) 2024.06.04
터미널로 GitHub Push하기  (1) 2024.06.04