复习:简单计算器
本课属于 Coddy Dart 学习旅程的“面向对象编程”单元。第 9 课,共 110 课。
挑战
中等在 calculator.dart 中编写一个完整的 Calculator 类,综合运用你学到的所有知识。driver.dart 文件会导入并测试你的类。
你的 Calculator 类必须展示本单元涵盖的所有主题:
- 外部文件:
driver.dart会使用import 'calculator.dart';导入calculator.dart - 库和导入:
driver.dart使用import 'dart:io'; - 面向对象编程简介:定义
class Calculator,并使用Calculator()创建对象 - 类与对象:每个测试都会创建一个全新的
Calculator对象,并拥有独立的状态 - this 关键字:在所有方法中使用
this.result访问实例变量 - 方法:实现
add、subtract、multiply、divide、clear和getResult - 实例变量:将
int result = 0声明为实例变量 - 构造函数基础:添加一个
Calculator()构造函数,将result设为0,并打印'Calculator ready'
方法要求:
int add(int number):将number加到result上,并返回新的结果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重置为0int 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');
}
}
面向对象编程中的所有课
自己练习: Dart 在线编译器