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

ملخص - حاسبة الأشكال

جزء من قسم Object Oriented Programming في رحلة C# على Coddy — الدرس 30 من 70.

challenge icon

التحدي

سهل

لنقم ببناء حاسبة أشكال تجمع كل ما تعلمته حول الواجهات (interfaces) وتعدد الأشكال (polymorphism). ستقوم بإنشاء نظام حيث يمكن معالجة الأشكال المختلفة بشكل موحد من خلال واجهة مشتركة، مما يوضح قوة تعدد الأشكال في وقت التشغيل (runtime polymorphism).

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

  • IShape.cs: قم بتعريف واجهة تسمى IShape داخل مساحة الأسماء Shapes. يجب أن يكون كل شكل قادرًا على حساب مساحته ووصف نفسه. قم بالتصريح عن طريقتين (methods): CalculateArea() التي تعيد double، و GetDescription() التي تعيد string.
  • Circle.cs: أنشئ فئة Circle في مساحة الأسماء Shapes تقوم بتنفيذ IShape. الدائرة لها خاصية Radius (double) يتم تعيينها من خلال منشئ الفئة (constructor). صيغة المساحة هي Math.PI * Radius * Radius. يجب أن يعيد الوصف "Circle with radius {Radius}".
  • Rectangle.cs: أنشئ فئة Rectangle في مساحة الأسماء Shapes تقوم بتنفيذ IShape. المستطيل له خاصيتي Width و Height (كلاهما double) يتم تعيينهما من خلال منشئ الفئة. المساحة هي ببساطة العرض مضروبًا في الارتفاع. يجب أن يعيد الوصف "Rectangle {Width}x{Height}".
  • Program.cs: في ملفك الرئيسي، أنشئ دائرة ومستطيلاً باستخدام قيم الإدخال، ثم قم بتخزينهما في مصفوفة من مراجع IShape. قم بالمرور عبر المصفوفة في حلقة تكرارية، ولكل شكل، اطبع وصفه متبوعًا بمساحته مقربة إلى منزلتين عشريتين. يوضح هذا كيف يمكنك معالجة أشكال مختلفة تمامًا من خلال نفس الواجهة!

ستتلقى ثلاثة مدخلات:

  • نصف قطر الدائرة (double)
  • عرض المستطيل (double)
  • ارتفاع المستطيل (double)

اطبع المخرجات بهذا التنسيق لكل شكل:

{GetDescription() result}
Area: {CalculateArea() rounded to 2 decimal places}

على سبيل المثال، إذا كانت المدخلات هي 5، 4، و 6، يجب أن تكون المخرجات:

Circle with radius 5
Area: 78.54
Rectangle 4x6
Area: 24.00

لاحظ كيف أن حلقة التكرار الخاصة بك لا تحتاج إلى معرفة ما إذا كانت تتعامل مع دائرة أو مستطيل - فهي ببساطة تستدعي طرق الواجهة وتترك تعدد الأشكال يتولى الباقي. هذه هي أناقة البرمجة باستخدام الواجهات!

جرّب بنفسك

using System;
using Shapes;

class Program
{
    public static void Main(string[] args)
    {
        // قراءة قيم المدخلات
        double circleRadius = Convert.ToDouble(Console.ReadLine());
        double rectWidth = Convert.ToDouble(Console.ReadLine());
        double rectHeight = Convert.ToDouble(Console.ReadLine());
        
        // TODO: قم بإنشاء كائن Circle بنصف القطر المعطى
        
        // TODO: قم بإنشاء كائن Rectangle بالعرض والارتفاع المعطيين
        
        // TODO: قم بإنشاء مصفوفة من IShape تحتوي على كلا الشكلين
        
        // TODO: قم بالمرور عبر المصفوفة ولكل شكل:
        // - اطبع الوصف باستخدام GetDescription()
        // - اطبع "Area: " متبوعاً بـ CalculateArea() مقرباً إلى منزلتين عشريتين
    }
}

جميع دروس Object Oriented Programming