연산자는 +, -, *, / 중 하나를 선택할 수 있습니다.
readOperand : readOperand()는 숫자를 입력받는 함수입니다.
사용자로부터 입력을 받아서 숫자로 변환한 뒤 반환합니다.
숫자 입력을 받기 위해 readLine() 함수를 사용하며,
사용자가 유효한 숫자를 입력하지 않은 경우 toDoubleOrNull() 함수를 사용하여
null을 반환합니다. 이때 ?: 연산자를 사용하여 null인 경우 예외
클래스 계산기 (계산기 설계도)
속성 (입력값)
메서드 더하기, 빼기, 곱하기, 나누기
인스턴스 - 설계도(클래스)를 바탕으로 실제 작성한 것 // 7/17일 여기까지 작성
메인
계산기 속성(변수 : 연산자) 입력
연산자 입력한 것을 읽기
+경우, -경우, *경우, /경우, 그 외의 경우
첫 번째, 변수값(실수) 입력
두 번째, 변수값(실수) 입력
더하기일 경우, 첫 번째 변수값 + 두 번째 변수값
빼기일 경우, 첫 번째 변수값 - 두 번째 변수값
곱하기일 경우, 첫 번째 변수값 * 두 번째 변수값
나누기일 경우, 첫 번째 변수값 / 두 번째 변수값
0으로 나눌 경우, 에러메시지 출력
사용자가 유효한 숫자를 입력하지 않은 경우, null로 반환 -> ?: 연산자를 사용하여 null인 경우,
예외처리해서 에러메시지 출력 // 7/18 작성한 것
Lv4. 추상 클래스
Lv3.의 클래스의 메소드를 클래스로 지정 // 7/19 작성 Lv3에 비해서 SOLID를 잘 반영하여 객체지향의 설계가된 것 같다.
추상클래스가 개별적으로 의존하여 작성 // 7/20 작성
클래스간 결합도
추상 클래스를 만들고 기존의 메소드들을 클래스로 만들었습니다.
그리고 오버라이드를 통해 추상 클래스의 메소드를 재정의 하였습니다.
의존성의 변화
Lv3의 경우 클래스 하나였고 Lv4의 경우 추상클래스를 오버라이드한 클래스(Lv3의 메소드 기능을 가진)를 별도로 만든 것
Lv3.에서는 수정 한다면 전체가 영향을 받지만, 추상클래스에서는 의존도가 많아져 개별적이게 되었고,
수정을 한다고 해도 개별적인 개체 하나만 영향을 받습니다.
Lv3.에 비해서 SOLID가 잘 반영된 것 같고 더 객체지향의 설계가 된 것 같습니다.
어떤점이 개선 되었는지
Lv3.에서 SOLID의 원칙을 지켜 만든 것이 Lv4. 같습니다.
수정을 한다고 해도 기능 하나만 영향을 받기 때문에 수정이 용이해졌습니다.
단일 책임 원칙이 적용 되었는가?
적용된 것 같습니다.
'TIL' 카테고리의 다른 글
230731 TIL (1) | 2023.07.31 |
---|---|
230721 TIL (0) | 2023.07.24 |
230719 TIL (0) | 2023.07.19 |
230718 TIL (0) | 2023.07.18 |
230717 TIL (0) | 2023.07.17 |