TIL(Today I Learned)

두 번째 Kotlin 계산기 구현 - 객체지향에 대해 생각하기

Happy._. 2024. 4. 24. 20:59

두 자리 단순 계산에 이어 이번에는 키보드로 수식을 입력하면 연산 후 값을 출력해주는 계산기를 만들어 봤다.

계산기 프로그램을 실행하면 다음 이미지와 같이 작동된다.

 

코드는 깃허브에 올려져 있어서 링크만 첨부한다.

https://github.com/hellou8363/kotlin-individual-assignment/tree/main/week2

 

동작 방식은 다음과 같다. (이것도 README에 작성되어 있다.)

  1. Guidance 클래스의 usageGuide 함수가 계산기 사용에 대한 안내를 출력하고 키보드 입력을 받는다.
  2. 입력 받은 값을 Storage 클래스의 save 함수에 전달한다.
  3. save 함수는 입력 받은 값이 다음에 해당할 때 Guidance 클래스의 errorGuide 함수에게 전달한다.
    • 사칙연산 기호와 숫자 외 다른 값이 있는 경우
    • 계산할 수 있는 범위의 값을 넘어서는 경우
  4. 입력 값에 문제가 없는 경우, 기호와 숫자를 분리하여 List에 저장한다.
  5. 기호를 저장한 List를 기준으로 숫자를 저장한 List에서 값을 하나씩 가져와 기호에 맞는 연산 함수에게 전달한다.
  6. 값을 전달받은 연산 함수(xxxOperation)는 두 개의 값을 연산 후 결괏값을 반환한다.
  7. 반환된 값은 Storage 클래스의 결괏값을 저장하는 변수(result)에 저장하고 다음 진행을 위해 Calculator의 next 함수를 호출한다.
  8. 5 ~ 8번의 순서를 반복하면서 입력 받은 값을 모두 더했을 경우 Guidance 클래스의 resultGuide 함수에 결괏값을 저장한다.
  9. resultGuide 함수는 전달받은 결괏값을 출력한다.
  10. 프로그램이 종료된다.

 

 

내가 계산기를 만들면서 생각한 계산기에서의 객체는 4가지이다.

  1. Guidance(안내)
    • 사용자에게 계산기 사용에 대한 안내를 함
    • 저장을 담당하는 객체에게 사용자가 입력하는 값을 받으라고 알려줌
    • 사용자에게 수식에 문제가 있다는 안내를 함
    • 사용자에게 계산 결괏값에 대한 안내를 함
  2. Calculator(계산기)
    • 계산해야 할 값을 각 연산 객체들에게 전달해 줌
    • 각 연산을 담당하는 객체들에게 연산을 하라고 지시함
    • 받은 결괏값을 저장 객체에게 전달해 줌
  3. Storage(저장)
    • 사용자가 입력한 값을 확인하고 저장함
    • 올바르지 않는 값일 때 안내 객체에게 잘못된 값이 왔다고 알려줌
  4. XXXOperation : 각 연산 객체들로 담당 연산만 하고 값을 넘겨줌

 

이번 계산기 프로그램을 만들면서 어려웠던 점은 객체지향에 대한 이해가 부족한 것이다.

코드를 작성하면서도 이게 정말 객체지향적인 것인가? 생각하다 보니 코드 작성보다 생각하는데 시간이 정말 많이 들었다.

앞으로 객체지향에 대해 더 이해할 수 있도록 관련 내용과 다른 사람들이 작성한 코드를 보면서 내 코드에도 적용할 수 있도록 노력해야겠다.