Menu
CoddyTech

Ôn tập: Máy tính đơn giản

Thuộc phần Lập trình hướng đối tượng trong hành trình Dart của Coddy. Bài học 9 trên 110.

challenge icon

Thử thách

Trung bình

Xây dựng một lớp Calculator hoàn chỉnh trong calculator.dart, kết hợp mọi kiến thức bạn đã học. Tệp driver.dart sẽ nhập và kiểm tra lớp của bạn.

Lớp Calculator của bạn cần thể hiện tất cả các chủ đề đã học trong module này:

  1. Tệp bên ngoài: calculator.dart sẽ được driver.dart nhập bằng import 'calculator.dart';
  2. Thư viện và câu lệnh nhập: driver.dart sử dụng import 'dart:io';
  3. Giới thiệu về lập trình hướng đối tượng: Định nghĩa class Calculator và tạo đối tượng bằng Calculator()
  4. Lớp và đối tượng: Mỗi test tạo một đối tượng Calculator mới với trạng thái độc lập riêng
  5. Từ khóa this: Dùng this.result bên trong tất cả phương thức để truy cập biến của instance
  6. Phương thức: Triển khai add, subtract, multiply, divide, clear và getResult
  7. Biến của instance: Khai báo int result = 0 làm biến của instance
  8. Kiến thức cơ bản về hàm khởi tạo: Thêm hàm khởi tạo Calculator() đặt result thành 0 và in ra 'Calculator ready'

Yêu cầu về phương thức:

  • int add(int number): cộng number vào result, trả về kết quả mới
  • int subtract(int number): trừ number khỏi result, trả về kết quả mới
  • int multiply(int number): nhân result với number, trả về kết quả mới
  • int divide(int number): chia result cho number bằng phép chia số nguyên (~/=), trả về kết quả mới. Nếu number là 0, in chính xác 'Error: Division by zero' và trả về kết quả không thay đổi
  • void clear(): đặt lại result thành 0
  • int getResult(): trả về result hiện tại

Ví dụ sử dụng:

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

Tự làm thử

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

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch Dart online