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

ملخص - Custom List

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

challenge icon

التحدي

سهل

لنقم ببناء فئة CustomList تجمع بين جميع الميزات المتقدمة من هذا الفصل - تحميل عامل التشغيل الزائد (operator overloading)، والمفهرسات (indexers)، وتجاوز ToString()، وطرق التوسيع (extension methods) - لإنشاء مجموعة تبدو طبيعية وبديهية في الاستخدام.

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

  • CustomList.cs: أنشئ فئة CustomList في مساحة الأسماء Collections والتي تغلف مصفوفة صحيحة داخلية وتوفر أنماط وصول بديهية. يجب أن تحتوي قائمتك على:
    • مصفوفة صحيحة خاصة لتخزين العناصر وخاصية Count (مع تعيين خاص private setter) لتتبع عدد العناصر المخزنة.
    • منشئ (constructor) يقبل السعة (عدد صحيح) ويهيئ المصفوفة الداخلية بهذا الحجم.
    • طريقة Add(int item) تضيف عنصراً إلى الموضع المتاح التالي (إذا كانت هناك مساحة).
    • مفهرس this[int index] يسمح بالحصول على العناصر وتعيينها حسب الموضع.
    • عامل تشغيل + محمل بشكل زائد يجمع بين قائمتي CustomLists في قائمة جديدة تحتوي على جميع العناصر من كلتيهما (يجب أن تكون سعة القائمة الجديدة هي مجموع عدد عناصر القائمتين).
    • طريقة ToString() متجاوزة تعيد العناصر بتنسيق [item1, item2, item3] - قم بتضمين العناصر حتى Count فقط، وليس المواضع الفارغة.
  • ListExtensions.cs: أنشئ فئة ثابتة ListExtensions في مساحة الأسماء Collections مع طريقة توسيع لـ CustomList الخاصة بك:
    • Sum() - تعيد مجموع جميع العناصر في القائمة (حتى Count).
  • Program.cs: في ملفك الرئيسي، أنشئ قائمتي CustomLists، وأضف عناصر إلى كل منهما، ثم استعرض جميع الميزات وهي تعمل معاً - استخدم المفهرس للوصول إلى العناصر، واجمع القوائم باستخدام عامل التشغيل +، واطبع باستخدام ToString()، واحسب المجموع باستخدام طريقة التوسيع الخاصة بك.

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

  • ثلاثة أعداد صحيحة لإضافتها إلى القائمة الأولى.
  • ثلاثة أعداد صحيحة لإضافتها إلى القائمة الثانية.

أنشئ القائمة الأولى بسعة 5 والثانية بسعة 3. أضف قيم المدخلات الثلاثة إلى كل قائمة على حدة.

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

List 1: {ToString()}
List 2: {ToString()}
List 1[0]: {first item}
Combined: {ToString() of combined list}
Combined sum: {Sum()}

على سبيل المثال، إذا كانت المدخلات هي 10، 20، 30، 5، 15، و 25، يجب أن تكون المخرجات:

List 1: [10, 20, 30]
List 2: [5, 15, 25]
List 1[0]: 10
Combined: [10, 20, 30, 5, 15, 25]
Combined sum: 105

لاحظ كيف تعمل جميع القطع معاً - يمنحك المفهرس وصولاً يشبه المصفوفة، ويتيح لك عامل التشغيل + دمج القوائم بشكل طبيعي، ويوفر ToString() مخرجات قابلة للقراءة، وتضيف طريقة التوسيع وظائف مفيدة. هذا هو شعور الفئات المصممة جيداً!

جرّب بنفسك

using System;
using Collections;

class Program
{
    public static void Main(string[] args)
    {
        // قراءة ستة أعداد صحيحة
        int a1 = Convert.ToInt32(Console.ReadLine());
        int a2 = Convert.ToInt32(Console.ReadLine());
        int a3 = Convert.ToInt32(Console.ReadLine());
        int b1 = Convert.ToInt32(Console.ReadLine());
        int b2 = Convert.ToInt32(Console.ReadLine());
        int b3 = Convert.ToInt32(Console.ReadLine());

        // TODO: إنشاء أول CustomList بسعة 5
        // TODO: إضافة a1، a2، a3 إلى القائمة الأولى

        // TODO: إنشاء ثاني CustomList بسعة 3
        // TODO: إضافة b1، b2، b3 إلى القائمة الثانية

        // TODO: طباعة List 1 باستخدام ToString()
        // TODO: طباعة List 2 باستخدام ToString()
        // TODO: طباعة List 1[0] باستخدام الـ indexer
        // TODO: دمج القوائم باستخدام معامل + وطباعة النتيجة
        // TODO: طباعة مجموع القائمة المدمجة باستخدام طريقة التوسيع Sum()
    }
}

جميع دروس Object Oriented Programming