Latest web development tutorials

C # تعدد الأشكال

تعدد الأشكال يعني أن هناك أشكال متعددة.في وجوه المنحى نموذج البرمجة، وغالبا ما يتم التعبير عن تعدد الأشكال باسم "واجهة واحدة، وظائف متعددة."

تعدد الأشكال يمكن أن يكون ساكنا أو متحركا.تعدد ثابت في وظيفة استجابة يحدث في وقت الترجمة.فيتعدد الأشكال دينامية، تحدث وظيفة استجابة في وقت التشغيل.

تعدد ثابت

في وقت الترجمة، وظائف آلية اتصال والأشياء يسمى الربط المبكر، المعروف أيضا باسم ملزمة ثابت. C # يقدم اثنين من التقنيات لتنفيذ تعدد الأشكال ثابت. وهم:

  • وظيفة الحمولة الزائدة
  • الحمولة الزائدة المشغل

المشغل والحمولة الزائدة مناقشة في المقطع التالي، سنقوم بمناقشة الحمولة الزائدة الدالة التالية.

وظيفة الحمولة الزائدة

يمكنك أن تكون في نفس النطاق لنفس اسم وظيفة له تعريفات متعددة. يجب أن تكون وظائف محددة تختلف عن بعضها البعض يمكن أن تكون قائمة المعلمات أنواع المعلمة، ويمكن أيضا أن يكون عدد من معلمات مختلفة. لا يمكن أن تكون فوق طاقتها فقط عن طريق نوع عودة تعريف الدالة.

يوضح المثال التالي العديد من نفسالطباعة وظيفة ()،لطباعة أنواع مختلفة من البيانات:

باستخدام نظام.
مساحة PolymorphismApplication
{
   الطبقة Printdata
   {
      باطلة طباعة (ط كثافة العمليات)
      {
         Console.WriteLine ( "الطباعة الباحث: {0}"، ط)؛
      }

      طباعة باطلة (مزدوجة و)
      {
         Console.WriteLine ( "الطباعة تعويم: {0}"، و).
      }

      باطلة طباعة (سلسلة ق)
      {
         Console.WriteLine ( "سلسلة الطباعة: {0}"، ق).
      }
      ساكنة باطلة الرئيسية (سلسلة [] وسائط)
      {
         ص Printdata = الجديدة Printdata ()؛
         // استدعاء الطباعة لطباعة p.print عدد صحيح (5)؛
         // استدعاء الطباعة لطباعة تعويم p.print (500،263)؛
         // استدعاء الطباعة إلى p.print سلسلة الطباعة ( "مرحبا C ++")؛
         Console.ReadKey ()؛
      }
   }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

طباعة الباحث: 5
الطباعة تعويم: 500.263
سلسلة الطباعة: مرحبا C ++

تعدد الأشكال الديناميكي

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

يرجى ملاحظة أن ما يلي بعض القواعد لفئات مجردة:

  • لا يمكنك إنشاء مثيل فئة مجردة.
  • لا يمكنك الإعلان عن طريقة مجردة خارج فئة مجردة.
  • عن طريق وضع أمام الكلمات الأساسية تعريف الفئةمختومة، ويمكن أن يتم تعريف الطبقة كصفوف مختومة.عندما أعلنمختومة فئة، فإنه لا يمكن أن تكون موروثة.لا يمكن تعريف فئة مجردة كما مختومة.

يوضح البرنامج التالي فئة مجردة:

باستخدام نظام.
مساحة PolymorphismApplication
{
   مجردة من الدرجة الشكل
   {
      منطقة كثافة العمليات المجردة العامة ()؛
   }
   الطبقة مستطيل الشكل:
   {
      طول كثافة العمليات الخاص؛
      عرض الباحث الخاص؛
      مستطيل العام (دولي ل= 0، الباحث ب = 0)
      {
         طول = أ.
         العرض = ب.
      }
      منطقة كثافة تجاوز العام ()
      { 
         Console.WriteLine ( "منطقة الطبقة المستطيل:")؛
         عودة (العرض * الطول). 
      }
   }

   الطبقة RectangleTester
   {
      ساكنة باطلة الرئيسية (سلسلة [] وسائط)
      {
         المستطيل ص = المستطيل الجديد (10، 7)؛
         ضعف و= r.area ()؛
         Console.WriteLine ( "الحجم: {0}"، أ).
         Console.ReadKey ()؛
      }
   }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

المستطيل حجم الفصل:
المساحة: 70

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

ويتحقق تعدد الأشكال ديناميكية من خلالفئات مجردة وأساليب الافتراضية.

يوضح البرنامج التالي هذه النقطة:

باستخدام نظام.
مساحة PolymorphismApplication
{
   الطبقة الشكل 
   {
      محمية عرض الباحث، ارتفاع،
      الشكل العام (دولي ل= 0، الباحث ب = 0)
      {
         عرض = أ.
         ارتفاع = ب.
      }
      منطقة كثافة العمليات الافتراضية العامة ()
      {
         Console.WriteLine ( "منطقة الوالد:")؛
         العودة 0؛
      }
   }
   الطبقة مستطيل الشكل:
   {
      مستطيل العام (دولي ل= 0، الباحث ب = 0): قاعدة (أ، ب)
      {

      }
      منطقة كثافة تجاوز العام ()
      {
         Console.WriteLine ( "منطقة الطبقة المستطيل:")؛
         العودة (العرض * الارتفاع). 
      }
   }
   الطبقة مثلث الشكل:
   {
      جمهور المثلث (الباحث و= 0، الباحث ب = 0): قاعدة (أ، ب)
      {
      
      }
      منطقة كثافة تجاوز العام ()
      {
         Console.WriteLine ( "منطقة الطبقة المثلث:")؛
         العودة (العرض * الارتفاع / 2)؛ 
      }
   }
   الطبقة المتصل
   {
      CallArea الفراغ الجمهور (ش الشكل)
      {
         كثافة العمليات ل.
         و= sh.area ()؛
         Console.WriteLine ( "الحجم: {0}"، أ).
      }
   }  
   اختبار الطبقة
   {
      
      ساكنة باطلة الرئيسية (سلسلة [] وسائط)
      {
         المتصل ج = المتصل الجديد ()؛
         المستطيل ص = المستطيل الجديد (10، 7)؛
         مثلث ر = مثلث جديد (10، 5)؛
         c.CallArea (ص)؛
         c.CallArea (ر)؛
         Console.ReadKey ()؛
      }
   }
}

عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها، وتنتج النتائج التالية:

المستطيل حجم الفصل:
المساحة: 70
منطقة الطبقة المثلث:
المساحة: 25