Menu
Coddy logo textTech

復習:簡易電卓

CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 9/110。

challenge icon

チャレンジ

中級

これまで学んだことのすべてをまとめた完全な Calculator クラスを calculator.dart に作成してください。driver.dart ファイルがあなたのクラスをインポートしてテストします。

Calculator クラスは、このモジュールで扱ったすべてのトピックを実演する必要があります:

  1. 外部ファイル: calculator.dart は、import 'calculator.dart'; を使用して driver.dart によってインポートされます。
  2. ライブラリとインポート: driver.dartimport 'dart:io'; を使用します。
  3. OOP への導入: class Calculator を定義し、Calculator() でオブジェクトを作成します。
  4. クラス vs オブジェクト: 各テストは、独自の独立した状態を持つ新しい Calculator オブジェクトを作成します。
  5. this キーワード: インスタンス変数にアクセスするために、すべてのメソッド内で this.result を使用してください。
  6. メソッド: addsubtractmultiplydivideclear、および getResult を実装してください。
  7. インスタンス変数: int result = 0 をインスタンス変数として宣言してください。
  8. コンストラクタの基本: result0 に設定し、'Calculator ready' と出力する Calculator() コンストラクタを追加してください。

メソッドの要件:

  • int add(int number)resultnumber を加え、新しい結果を返します。
  • int subtract(int number)result から number を引き、新しい結果を返します。
  • int multiply(int number)resultnumber を掛け、新しい結果を返します。
  • int divide(int number) — 整数除算(~/=)を使用して resultnumber で割り、新しい結果を返します。もし number0 の場合は、正確に 'Error: Division by zero' と出力し、変更されていない結果を返します。
  • void clear()result0 にリセットします。
  • int getResult() — 現在の result を返します。

使用例:

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');
  }
}

オブジェクト指向プログラミングのすべてのレッスン