계산기 2일차

두주·2023년 12월 6일
0

TIL

목록 보기
11/58

마션의 첫 문장밖에 내 상황을 설명할 길이 없다.

나는 꺾여버렸다.

중요한 것은 꺾이지 않는 마음이지만
매우 중요함에도 이미 꺾여버린 마음이다.

class Calculator {
var multiplyOperation = MultiplyOperation() //: AbstractOperation(num1:Int, num2: Int)
var divideOperation = DivideOperation() //: AbstractOperation(num1:Int, num2: Int)

fun calculate(num1: Int, num2: Int, operation: Int) {
    when (operation) {
        1 -> {
            var result = AddOperation().operate(num1, num2)
            println("더하기를 선택하셨습니다.")
            println("결과: $result")
        }

        2 -> {
            var result = SubtractOperation().operate(num1, num2)
            println("빼기를 선택하셨습니다.")
            println("결과: $result")
        }

        3 -> {
            var result = multiplyOperation.operate(num1, num2)
            println("곱하기를 선택하셨습니다.")
            println("결과: $result")
        }

        4 -> {
            var result = divideOperation.operate(num1, num2)
            println("나누기를 선택하셨습니다.")
            println("결과: $result")
        }

        else -> println("올바른 연산자를 선택해 주세요.")
    }
}

}

일단 내내 정성껏 만들던 계산기는 하나도 쓸모가 없어졌다. (삭제함)

자신 만만하게 "일단 해보자"로 박치기 했던 게
예시를 제대로 읽지도 않은 채 만들어 버렸다.

계산기에서 구현이 필요한 기능적 사항들은 무시한 채
그냥 계산만 할 수 있는 프로그램이 만들어 졌다.

아.

소중한 하루를 날려 튜터님을 찾아가 응급 조치를 받았다.

일단 설명해 주신 내용들은 너무나도 알찼다.

기억나는 대로 코드를 짜봤지만 내 손에서는 코드가 실행이 안된다.

Abstractoperation 이라는 추상클래스를 만들고,
추상 매서드 Operator를 만들었다.

abstract class AbstractOperation() {
abstract fun Operator (num1:Int, num2:Int): Double}

그리고 각 연산자마다 계산한 값을 return값으로 준 뒤
오버라이드로 넣어줬다.

class AddOperation : AbstractOperation() {
override fun Operator(num1: Int, num2: Int): Double {
return (num1 + num2).toDouble()}

  • 다른 연산자도 return값을 제외하면 동일하다.

그리고 문제의 main

fun main() {
println("num1을 입력해 주세요.")
var num1:Double = readLine()!!.toDouble()
println("num2를 입력해 주세요.")
var num2:Double = readLine()!!.toDouble()
println("연산자를 선택해 주세요.")
println("1. 더하기\n2. 빼기 \n3. 곱하기 \n4. 나누기")
var operator = readLine()!!.toInt()
val operation = when (operator) {
1 -> AddOperation()
2 -> SubstractOperation()
3 -> MultiplyOperation()
4 -> DivideOperation()
else -> {println("잘못된 연산자입니다.")}
}
val calc = AbstractOperation(operation)
println("결과: ${calc.operate(num1, num2)} ")
}

아.

분명히 추상매서드를 불러오고, num1, num2를 대입하는 과정에서
문제가 발생한 것이 틀림없을 것 같은 느낌이다.

제대로 이해하지도 못한 채로 따라만 하려하니 되는게 없다.

내일 다시 도전.

내 스스로 문제점을 찾고 해결하고 싶다.

profile
야옹.

0개의 댓글