Lv3
- AddOperation(더하기), SubstractOperation(빼기), MultiplyOperation(곱하기), DivideOperation(나누기) 연산 클래스를을 만든 후 클래스간의 관계를 고려하여
Calculator 클래스와 관계를 맺기
- 관계를 맺은 후 필요하다면 Calculator 클래스의 내부 코드를 변경하기
- 나머지 연산자(%) 기능은 제외합니다.
- Lv2 와 비교하여 어떠한 점이 개선 되었는지 스스로 생각해 봅니다.
- hint. 클래스의 책임(단일책임원칙)- Calculator.kt
fun main() { var run = true var numB = 0 print("계산할 숫자 :") var numA = readLine()!!.toInt() while (run){ println("\n$numA 에 어떤 연산 하시겠습니까? \n >> 1. + | 2. - | 3. * | 4. / | 5. % | -1. 종료 <<") var operator = readLine() if (operator == "-1" || operator == "종료"){ run = false;} else{ print("계산할 숫자 :") numB = readLine()!!.toInt() } when(operator){ "1","+" ->{ // println("= ${Operator().plus(numA,numB)}") // numA = Operator().plus(numA,numB) numA = AddOperation(numA,numB).plus() println("= ${numA}") } "2","-" ->{ // println("= ${Operator().subtract(numA,numB)}") // numA = Operator().subtract(numA,numB) numA = SubstractOperation(numA,numB).subtract() println("= ${numA}") } "3","*" ->{ // println("= ${Operator().multiply(numA,numB)}") // numA = Operator().multiply(numA,numB) numA = MultiplyOperation(numA,numB).multiply() println("= ${numA}") } "4","/" ->{ // println("= ${Operator().divide(numA,numB)}") // numA = Operator().divide(numA,numB) numA = DivideOperation(numA,numB).divide().roundToInt() println("= ${numA}") } "5","%" ->{ numA = Operator().remain(numA.toDouble(),numB.toDouble()).roundToInt() println("= ${numA}") } "-1","종료" ->{ println("-------- 계산기를 종료 합니다 --------") } else ->{ println("잘못된 값을 입력 했습니다: ${operator}") } } } }- AddOperation(더하기), SubstractOperation(빼기), MultiplyOperation(곱하기), DivideOperation(나누기)
class AddOperation {//더하기 var A = 0 var B = 0 constructor(numA: Number,numB: Number) { A = numA.toInt() B = numB.toInt() } fun plus() :Int = A + B } class SubstractOperation {//빼기 var A = 0 var B = 0 constructor(numA: Number,numB: Number) { A = numA.toInt() B = numB.toInt() } fun subtract() :Int = A - B } class MultiplyOperation {//곱하기 var A = 0 var B = 0 constructor(numA: Number,numB: Number) { A = numA.toInt() B = numB.toInt() } fun multiply() :Int = A * B } class DivideOperation {//나누기 var A = 0.0 var B = 0.0 constructor(numA: Number,numB: Number) { A = numA.toDouble() B = numB.toDouble() } fun divide() :Double = A / B }
- 개인사정으로 lv4 생략