Lv3 : AddOperation(더하기), SubstractOperation(빼기), MultiplyOperation(곱하기), DivideOperation(나누기) 연산 클래스를을 만든 후 클래스간의 관계를 고려하여 Calculator 클래스와 관계를 맺기
- 관계를 맺은 후 필요하다면 Calculator 클래스의 내부코드를 변경하기
- 나머지 연산자(%) 기능은 제외합니다.
- Lv2 와 비교하여 어떠한 점이 개선 되었는지 스스로 생각해 봅니다.
- hint. 클래스의 책임(단일책임원칙)
따로 뺀 클래스 안에 함수 만들 생각을 안해서 시간을 엄청 썼다.
그리고 부모 자식 상속 클래스 쓰려고 애먹었는데 필요 없었음... 대신에 상속 어떻게 사용하는지 제대로 공부한거 같다.
클래스가 여러개 있을 때 해야하는 스텝 정리 !
- 메인 함수에 인스턴스화 해주기 (객체 생성)
- 클래스에 있는 함수를 사용할 때에는
(인스턴스화한 객체 이름).(함수이름)(파라미터 값)
ex. addoperation.addition(number1, number2) - 클래스1 에 부여한 파라미터로 클래스2에 있는 함수를 적용하고 싶을 땐 클래스2를 부모, 클래스1을 자식으로 만들어야함.
- 클래스2 앞에 open 작성, 클래스1이름 뒤에 괄호 열고 클래스2의 생성자 이름 적어주기(생성자 이름만 적고 자료형은 적으면 안됨)
- 함수 가져오는건 2번과 같음
클래스 단일책임: 코드가 잘 짜여졌는지 확인을 하는 과정에서 곱셈도 해보고 나눗셈도 해보고 덧셈 뺄셈도 해볼텐데 덧셈을 해서 오류가 나면 addoperation 클래스 안에 있는 함수 로직에 문제가 있다는 것을 확인 할 수 있다는 장점이 있다.
package com.example.mycalculator
//Lv3: AddOperation(더하기), SubstractOperation(빼기), MultiplyOperation(곱하기),
// DivideOperation(나누기) 연산 클래스를을 만든 후 클래스간의 관계를 고려하여 Calculator 클래스와 관계를 맺기
fun main() {
// 입력 값
print("숫자를 입력하세요 : ")
var number1 = readLine()!!.toDouble()
print("연산자를 입력하세요 : ")
var operator = readLine()!!
print("숫자를 입력하세요 : ")
var number2 = readLine()!!.toDouble()
// 객체 인스턴스화해주기
var addOperation = AddOperation(number1, number2)
var subtractOperation = SubtractOperation(number1, number2)
var multiplyOperation = MultiplyOperation(number1, number2)
var divideOperation = DivideOperation(number1, number2)
when (operator) {
in "+" -> println(addOperation.addition(number1, number2))
in "-" -> println(subtractOperation.subtraction(number1, number2))
in "/" -> println(divideOperation.division(number1, number2))
in "*" -> println(multiplyOperation.multiplication(number1, number2))
}
}
class AddOperation(number1: Double, number2: Double) {
fun addition(number1: Double, number2: Double): Double = number1 + number2
}
class SubtractOperation(number1: Double, number2: Double) {
fun subtraction(number1: Double, number2: Double): Double = number1 - number2
}
class MultiplyOperation(number1: Double, number2: Double) {
fun multiplication(number1: Double, number2: Double): Double = number1 * number2
}
class DivideOperation(number1: Double, number2: Double) {
fun division(number1: Double, number2: Double): Double = number1 / number2
}
'Android (Kotlin) > mini projects' 카테고리의 다른 글
[Hotel Reservation] 호텔 예약 프로그램 lv.1.0 (0) | 2023.12.01 |
---|---|
[Calculator] 계산기 만들기 lv.4 (0) | 2023.11.30 |
[Calculator] 계산기 만들기 lv.2.1 (0) | 2023.11.30 |
[Calculator] 계산기 만들기 lv.2.0 (0) | 2023.11.29 |
[Calculator] 계산기 만들기 lv.1 (0) | 2023.11.28 |