Menu
Coddy logo textTech

חזרה: מחשבון פשוט

חלק מהיחידה תכנות מונחה עצמים במסלול ה-Dart של Coddy. שיעור 9 מתוך 110.

challenge icon

אתגר

בינוני

בנה מחלקה מלאה בשם Calculator בקובץ calculator.dart שמשלבת את כל מה שלמדת. הקובץ driver.dart ייבא את המחלקה שלך ויבדוק אותה.

המחלקה Calculator שלך חייבת להדגים את כל הנושאים שנלמדו ביחידה הזאת:

  1. קבצים חיצוניים: הקובץ calculator.dart ייובא על ידי driver.dart באמצעות import 'calculator.dart';
  2. ספריות וייבוא: driver.dart משתמש ב־import 'dart:io';
  3. מבוא לתכנות מונחה עצמים (OOP): הגדר את class Calculator וצור אובייקטים באמצעות Calculator()
  4. מחלקות לעומת אובייקטים: כל בדיקה יוצרת אובייקט Calculator חדש עם מצב עצמאי משלו
  5. מילת המפתח this: השתמש ב־this.result בכל המתודות כדי לגשת למשתנה המופע
  6. מתודות: ממש את add, subtract, multiply, divide, clear ו־getResult
  7. משתני מופע: הכרז על int result = 0 כמשתנה מופע
  8. יסודות הבנאים: הוסף בנאי Calculator() שמציב את result על 0 ומדפיס את 'Calculator ready'

דרישות המתודות:

  • int add(int number): מוסיפה את number ל־result ומחזירה את התוצאה החדשה
  • int subtract(int number): מחסירה את number מ־result ומחזירה את התוצאה החדשה
  • 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');
  }
}

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר Dart אונליין