البرمجة

تفاعل الصفوف والأساليب في C# بالتوريث

في الكود البرمجي الذي قدمته، يتعامل مع تفاعل بين الصفوف والأساليب الاستخدامية في لغة البرمجة C#. الكود يستخدم خصائص الصفوف الهجينة والأساليب الافتراضية لتحقيق تفاعل معين.

أولاً وقبل كل شيء، يُعرف الصف Base كصف مجرد (abstract)، ويحتوي على طريقتين محمية (protected). الطريقة الأولى هي foo() والتي تحتوي على استدعاء لطريقة bar()، ولكنها ليست مُنفذة بشكل كامل، بل تترك الجزء الذي يستدعي bar() بدون تحديد. الطريقة الثانية هي bar() والتي يتوجب على الصف الفرعي (Sub) تنفيذها.

ثم يأتي الصف Sub الذي يرث من الصف Base. يُعين الصف Sub الطريقة foo() ويستدعي foo() في الصف الأساسي باستخدام base.foo()، الأمر الذي يؤدي في النهاية إلى استدعاء bar() في الصف الأساسي.

عند تشغيل البرنامج، يتم إنشاء كائن من الصف Sub ويتم استدعاء foo() على هذا الكائن. بما أن foo() في الصف Sub تستدعي foo() في الصف Base، يحدث الاستدعاء اللاحق لـ bar()، وهنا تأتي الطريقة المُنفذة bar() في الصف Sub لتطبع “Print This” كناتج.

لذا، يمكننا تلخيص الأمور بالقول إن الاستدعاء النهائي لطريقة bar() يأتي من الصف Sub الذي يقوم بتنفيذها، وليس من الصف Base الذي يتضمن استدعاءها في طريقة foo().

المزيد من المعلومات

في هذا السياق، يمكننا إضافة المزيد من المعلومات لتوضيح السيناريو وتفاصيل الكود:

  1. الصف Base:

    • يُعتبر الصف Base صفًا مجرّدًا، وهو لا يمكن إنشاء كائنات منه مباشرة.
    • يحتوي على طريقة محمية (protected) افتراضية تسمى foo()، والتي تقوم بدورٍ هام، إذ تقوم بالاستدعاء من طريقة bar()، لكنها ليست مُنفَّذة بشكل كامل.
  2. الصف Sub:

    • يرث من الصف Base، ويحتوي على طريقتين محميتين.
    • يُعين foo() في الصف Sub، ولكن يستخدم base.foo() لاستدعاء foo() في الصف Base.
    • يُعين bar() في الصف Sub، وهذه الطريقة تقوم بطباعة “Print This” على الإخراج.
  3. الدالة Main:

    • تقوم بإنشاء كائن من الصف Sub باسم obj.
    • تستدعي foo() على هذا الكائن، مما يشغل سلسلة من الاستدعاءات التي تنتهي بتنفيذ bar() في الصف Sub، وتطبع “Print This” على الإخراج.
  4. التفاعل بين الصفوف:

    • يظهر التفاعل هنا بين الصفوف من خلال استدعاء طريقة في الصف Base، ثم يتم تنفيذها في الصف Sub.
    • يُظهر الاستخدام اللامباشر للطريقة الافتراضية foo() في الصف Base من خلال الاستدعاء في الصف Sub.

هذا السيناريو يبرز الاستخدام الفعّال للطرق الافتراضية والتوريث في برمجة C#، حيث يُمكن للصفوف الفرعية تنفيذ السلوك الخاص بها وفي الوقت نفسه الاستفادة من سلوك الصف الأساسي.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر