복습 - 간단한 계산기
Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨 — 110개 중 9번째.
챌린지
중급지금까지 배운 모든 내용을 종합하여 calculator.dart에 완전한 Calculator 클래스를 구축하세요. driver.dart 파일은 여러분이 만든 클래스를 임포트하고 테스트할 것입니다.
여러분의 Calculator 클래스는 이 모듈에서 다룬 모든 주제를 보여주어야 합니다:
- 외부 파일:
calculator.dart는driver.dart에서import 'calculator.dart';를 사용하여 임포트됩니다. - 라이브러리 및 임포트:
driver.dart는import 'dart:io';를 사용합니다. - OOP 입문:
class Calculator를 정의하고Calculator()로 객체를 생성합니다. - 클래스 vs 객체: 각 테스트는 독립적인 상태를 가진 새로운
Calculator객체를 생성합니다. - this 키워드: 인스턴스 변수에 접근하기 위해 모든 메서드 내부에서
this.result를 사용합니다. - 메서드:
add,subtract,multiply,divide,clear,getResult를 구현합니다. - 인스턴스 변수:
int result = 0을 인스턴스 변수로 선언합니다. - 생성자 기초:
result를0으로 설정하고'Calculator ready'를 출력하는Calculator()생성자를 추가합니다.
메서드 요구 사항:
int add(int number)—result에number를 더하고, 새로운 결과를 반환합니다.int subtract(int number)—result에서number를 빼고, 새로운 결과를 반환합니다.int multiply(int number)—result에number를 곱하고, 새로운 결과를 반환합니다.int divide(int number)— 정수 나눗셈(~/=)을 사용하여result를number로 나누고, 새로운 결과를 반환합니다. 만약number가0이면, 정확히'Error: Division by zero'를 출력하고 변경되지 않은 결과를 반환합니다.void clear()—result를0으로 초기화합니다.int getResult()— 현재result를 반환합니다.
사용 예시:
Calculator calc = Calculator(); // 출력: Calculator ready
calc.add(10); // result = 10
calc.multiply(3); // result = 30
calc.subtract(5); // result = 25
calc.divide(5); // result = 5
calc.divide(0); // 출력: Error: Division by zero
calc.clear(); // result = 0직접 해보기
import 'calculator.dart';
import 'dart:io';
void main() {
String testCase = stdin.readLineSync()!;
if (testCase == 'constructor_test') {
Calculator calc = Calculator();
print('Initial result: ${calc.getResult()}');
print('Calculator created successfully');
} else if (testCase == 'addition_test') {
Calculator calc = Calculator();
int r1 = calc.add(10);
print('After adding 10: $r1');
int r2 = calc.add(5);
print('After adding 5: $r2');
print('Final result: ${calc.getResult()}');
} else if (testCase == 'subtraction_test') {
Calculator calc = Calculator();
calc.add(20);
int r1 = calc.subtract(8);
print('After subtracting 8 from 20: $r1');
int r2 = calc.subtract(2);
print('After subtracting 2: $r2');
print('Final result: ${calc.getResult()}');
} else if (testCase == 'multiplication_test') {
Calculator calc = Calculator();
calc.add(5);
int r1 = calc.multiply(4);
print('After multiplying by 4: $r1');
int r2 = calc.multiply(2);
print('After multiplying by 2: $r2');
print('Final result: ${calc.getResult()}');
} else if (testCase == 'division_test') {
Calculator calc = Calculator();
calc.add(100);
int r1 = calc.divide(4);
print('After dividing by 4: $r1');
int r2 = calc.divide(5);
print('After dividing by 5: $r2');
print('Final result: ${calc.getResult()}');
} else if (testCase == 'division_by_zero_test') {
Calculator calc = Calculator();
calc.add(50);
print('Initial value: ${calc.getResult()}');
int r = calc.divide(0);
print('Result after division by zero: $r');
print('Value unchanged: ${calc.getResult()}');
} else if (testCase == 'clear_test') {
Calculator calc = Calculator();
calc.add(25);
calc.multiply(3);
print('Before clear: ${calc.getResult()}');
calc.clear();
print('After clear: ${calc.getResult()}');
print('Current result: ${calc.getResult()}');
} else if (testCase == 'comprehensive_test') {
Calculator calc = Calculator();
calc.add(10);
calc.multiply(3);
calc.subtract(5);
calc.divide(5);
print('After sequence of operations: ${calc.getResult()}');
calc.divide(0);
print('After division by zero attempt: ${calc.getResult()}');
calc.clear();
calc.add(100);
print('After clear and add 100: ${calc.getResult()}');
} else {
print('Unknown test case');
}
}