Menu
Coddy logo textTech

복습 - 간단한 계산기

Coddy Dart 여정의 객체 지향 프로그래밍 섹션에 포함된 레슨. 110개 중 9번째.

challenge icon

챌린지

중급

배운 모든 내용을 하나로 결합하는 완전한 Calculator 클래스를 calculator.dart에 작성하세요. driver.dart 파일이 여러분의 클래스를 가져와 테스트합니다.

여러분의 Calculator 클래스는 이 모듈에서 다룬 모든 주제를 보여줘야 합니다.

  1. 외부 파일: calculator.dartimport 'calculator.dart';를 사용하여 driver.dart에서 가져옵니다.
  2. 라이브러리 & 가져오기: driver.dartimport 'dart:io';를 사용합니다.
  3. OOP 소개: class Calculator를 정의하고 Calculator()를 사용하여 객체를 생성합니다.
  4. 클래스와 객체: 각 테스트는 고유한 독립 상태를 가진 새로운 Calculator 객체를 생성합니다.
  5. this 키워드: 모든 메서드 내부에서 인스턴스 변수를 참조하기 위해 this.result를 사용합니다.
  6. 메서드: add, subtract, multiply, divide, clear, getResult를 구현합니다.
  7. 인스턴스 변수: int result = 0을 인스턴스 변수로 Declare합니다.
  8. 생성자 기초: result0으로 설정하고 'Calculator ready'를 Print하는 Calculator() 생성자를 추가합니다.

메서드 요구 사항:

  • int add(int number): numberresult에 더하고 새로운 result를 Return합니다.
  • int subtract(int number): result에서 number를 빼고 새로운 result를 Return합니다.
  • int multiply(int number): resultnumber를 곱하고 새로운 result를 Return합니다.
  • int divide(int number): 정수 나눗셈(~/=)을 사용하여 resultnumber로 나누고 새로운 result를 Return합니다. number0이면 정확히 'Error: Division by zero'를 Print하고 변경되지 않은 result를 Return합니다.
  • void clear(): result0으로 재설정합니다.
  • int getResult(): 현재 result를 Return합니다.

사용 예:

Calculator calc = Calculator(); // prints: 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);                // prints: 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');
  }
}

객체 지향 프로그래밍의 모든 레슨

직접 연습해 보세요: 온라인 Dart 컴파일러