Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة - حاسبة الأشكال

جزء من قسم Object Oriented Programming في رحلة Dart على Coddy — الدرس 49 من 110.

challenge icon

التحدي

سهل

لنقم ببناء نظام حاسبة للأشكال يجمع بين الفئات المجردة (abstract classes) والواجهات (interfaces) لإنشاء مجموعة أدوات هندسية مرنة. ستصمم تسلسلاً هرمياً للفئات حيث تشترك الأشكال المختلفة في سلوك عام من خلال التجريد، بينما يوفر كل شكل حساباته الفريدة الخاصة به.

ستقوم بتنظيم الكود الخاص بك في ثلاثة ملفات:

  • shape.dart: حدد الفئة الأساسية المجردة والواجهة هنا:
    • فئة مجردة Shape مع خاصية String name ومنشئ (constructor). قم بتضمين أساليب مجردة (abstract methods) وهي double calculateArea() و double calculatePerimeter(). أضف أسلوباً عادياً describe() يطبع '$name - Area: ${calculateArea()}, Perimeter: ${calculatePerimeter()}'
    • فئة Drawable مع أسلوب draw() يطبع 'Drawing shape...'
  • shapes.dart: استورد shape.dart وأنشئ فئات الأشكال الملموسة (concrete classes) الخاصة بك:
    • فئة Rectangle ترث من Shape وتنفذ Drawable. أضف خصائص double width و double height. احسب المساحة كـ width * height والمحيط كـ 2 * (width + height). يجب أن يطبع أسلوب draw() النص التالي: 'Drawing rectangle ${width}x$height'
    • فئة Circle ترث من Shape وتنفذ Drawable. أضف خاصية double radius. استخدم 3.14159 لقيمة pi. احسب المساحة كـ pi * radius * radius والمحيط كـ 2 * pi * radius. يجب أن يطبع أسلوب draw() النص التالي: 'Drawing circle with radius $radius'
  • main.dart: استورد shapes.dart واستعرض حاسبة الأشكال الخاصة بك:
    • أنشئ Rectangle باسم 'Rectangle' مع عرض 5.0 وارتفاع 3.0
    • أنشئ Circle باسم 'Circle' مع نصف قطر 4.0
    • لكل شكل، استدعِ draw() ثم describe()
    • اطبع سطراً فارغاً بين الشكلين

يوضح هذا التحدي كيف تحدد الفئات المجردة الهيكل المشترك (كل شكل له حسابات مساحة ومحيط)، بينما تضيف الواجهات قدرات إضافية (الأشكال التي يمكن رسمها). كل فئة ملموسة ترث من الفئة المجردة لهويتها الأساسية وتنفذ الواجهة للحصول على وظائف إضافية.

المخرجات المتوقعة:

Drawing rectangle 5.0x3.0
Rectangle - Area: 15.0, Perimeter: 16.0

Drawing circle with radius 4.0
Circle - Area: 50.26544, Perimeter: 25.13272

جرّب بنفسك

import 'shapes.dart';

void main() {
  // TODO: قم بإنشاء مستطيل باسم 'Rectangle' بعرض 5.0 وارتفاع 3.0
  
  // TODO: قم بإنشاء دائرة باسم 'Circle' بنصف قطر 4.0
  
  // TODO: بالنسبة للمستطيل، استدعِ ()draw ثم ()describe
  
  // TODO: اطبع سطراً فارغاً
  
  // TODO: بالنسبة للدائرة، استدعِ ()draw ثم ()describe
}

جميع دروس Object Oriented Programming