復習:簡易電卓
CoddyのDartジャーニー「オブジェクト指向プログラミング」セクションの一部。レッスン 9/110。
チャレンジ
中級これまで学んだすべてを組み合わせて、完全な Calculator クラスを calculator.dart に作成してください。driver.dart ファイルがあなたのクラスをインポートしてテストします。
あなたの Calculator クラスでは、このモジュールで扱ったすべてのトピックを示す必要があります。
- 外部ファイル:
calculator.dartはdriver.dartからimport 'calculator.dart';を使ってインポートされます - ライブラリとインポート:
driver.dartはimport 'dart:io';を使用します - OOP 入門:
class Calculatorを定義し、Calculator()でオブジェクトを作成します - クラスとオブジェクト: 各テストでは、それぞれ独立した状態を持つ新しい
Calculatorオブジェクトを作成します - this キーワード: すべてのメソッド内で
this.resultを使用してインスタンス変数にアクセスします - メソッド:
add、subtract、multiply、divide、clear、getResultを実装します - インスタンス変数:
int result = 0をインスタンス変数として Declare します - コンストラクターの基礎:
resultを0に設定し、'Calculator ready'を prints するCalculator()コンストラクターを追加します
メソッドの要件:
int add(int number):numberをresultに加算し、新しい result を返しますint subtract(int number):resultからnumberを減算し、新しい result を返しますint multiply(int number):resultにnumberを乗算し、新しい result を返しますint divide(int number): 整数除算(~/=)を使用してresultをnumberで除算し、新しい result を返します。numberが0の場合は、正確に'Error: Division by zero'を print し、unchanged result を返します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まとめ:ジェネリックなストレージ自分で練習してみよう: Dartオンラインコンパイラ