復習:簡易電卓
CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 9/110。
チャレンジ
中級これまで学んだことのすべてをまとめた完全な Calculator クラスを calculator.dart に作成してください。driver.dart ファイルがあなたのクラスをインポートしてテストします。
Calculator クラスは、このモジュールで扱ったすべてのトピックを実演する必要があります:
- 外部ファイル:
calculator.dartは、import 'calculator.dart';を使用してdriver.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(); // 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');
}
}
オブジェクト指向プログラミングのすべてのレッスン
4Null Safety
Null Safety 入門Nullable と Non-Nullable? 演算子と ! 演算子late キーワードと Null SafetyNull-Aware 演算子クラスにおける Null Safetyまとめ:ユーザープロフィールシステム10コレクションとジェネリクス
List, Set, Map の概要型安全なコレクションジェネリッククラスジェネリックメソッドジェネリクスの制約Iterable と Iteratorまとめ:ジェネリックなストレージ