تعدد الأشكال في OOPS: ما هو تعدد الأشكال [شرح مفصل]

نشرت: 2020-11-24

تعدد الأشكال في OOPs لا ينفصل ومفهوم أساسي لكل لغة برمجة موجهة للكائنات. يمكن أن يتخذ الكائن أو المرجع أشكالًا متعددة في حالات مختلفة. كما توحي الكلمة ، تعني كلمة "بولي" "العديد" و "التحويل" إلى "النماذج" ؛ وبالتالي ، فإن تعدد الأشكال ككل يعني "خاصية لها أشكال عديدة".

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

قراءة: تعدد الأشكال مقابل الميراث

جدول المحتويات

مثال على تعدد الأشكال في OOPs

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

فيما يلي الكود الذي يشرح تعدد الأشكال بوضوح:

استخدام التحذيرات
# إنشاء فئة الحزمة
الحزمة أ ؛
# إنشاء المنشئ
فرعية جديدة
{
# التحول سيأخذ اسم الحزمة
# وإسنادها إلى فئة متغيرة
صفي $ = التحول ؛
نفسي $ = {
"الاسم" => التحول ،
'roll_no' => التحول
} ؛
طريقة فرعية
{
طباعة ("هذا ينتمي إلى الفئة أ") ؛
}
} ؛
الحزمة ب ؛
# تحتوي مجموعةISA على قائمة
# من فصول الآباء لهذا الفصل ، إن وجدت
myISA = (A) ؛

الخضوع
{
طباعة ("هذا ينتمي إلى الفئة ب") ؛
}
الحزمة الرئيسية
ب-> طريقة () ؛
أ-> طريقة () ؛

انتاج:

هذا ينتمي إلى الفئة ب

هذا ينتمي إلى الفئة أ

تعلم كيفية إنشاء تطبيقات مثل Swiggy و Quora و IMDB والمزيد

تفسير

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

أنواع تعدد الأشكال عفوا

في لغة البرمجة الشيئية (OOPS) ، هناك نوعان من تعدد الأشكال على النحو التالي:

  1. الربط الثابت (أو وقت التجميع) تعدد الأشكال ، على سبيل المثال ، أسلوب التحميل الزائد
  2. الربط الديناميكي (أو وقت التشغيل) تعدد الأشكال ، على سبيل المثال ، تجاوز الطريقة

مصدر

1. تجميع الوقت أو تعدد الأشكال الثابت

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

  • يجب أن تكون أنواع جميع المعلمات مختلفة.
  • يمكن أن يكون تسلسل المعلمات مختلفًا.
  • يجب أن يختلف عدد معلمات إحدى الطرق عن الطريقة الأخرى.

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

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

برنامج

الفئة أ // الفئة الأساسية

{

الباحث أ ؛

الجمهور :

عرض باطل ()

{

cout << "الفئة أ" ؛

}

} ؛

فئة B: عامة A // فئة مشتقة

{

الباحث ب ؛

الجمهور :

عرض باطل ()

{

cout << "الفئة ب" ؛

}

} ؛

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

  • أثناء وقت التشغيل ، يحدد مترجم اللغة طرقًا مختلفة من خلال تحديد تواقيع تلك الطرق.
  • يقوم المحول البرمجي أولاً بتحديد توقيع الأسلوب ويقرر طريقة استدعاء طريقة معينة أثناء تجميع البرنامج.
  • يعد تنفيذ تعدد الأشكال وقت الترجمة أسرع بكثير ولكن العملية ليست مرنة جدًا.

اقرأ أيضًا: أسئلة مقابلة OOPS

وقت التشغيل أو تعدد الأشكال الديناميكي

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

  • في Method Overriding ، يتم التصريح عن طريقة واحدة في فئة فرعية موجودة في فئة أصل. تكتسب فئة الطفل طريقة للتنفيذ.
  • أثناء تعدد الأشكال وقت التشغيل ، يقدم الفصل المواصفات الخاصة به لطريقة موروثة أخرى. يتم تحقيق هذا النقل بين الطرق دون تعديل أكواد كائن الفئة الأصلية.

برنامج

# تضمين <iostream>

باستخدام مساحة الاسم المنقولة جنسيا ؛

فئة Animal { // فئة أساسية

الجمهور :

لون السلسلة = "بني" ؛

} ؛

فئة الكلب: الحيوانات العامة // فئة الحيوانات الموروثة.

{

الجمهور :

لون السلسلة = "أخضر" ؛

} ؛

int main ( void ) {

الحيوان د = الكلب () ؛

cout << د اللون ؛

}

انتاج:

بني

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

الاختلافات B / W تعدد الأشكال وقت التجميع ووقت التشغيل

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

الكلمات الأخيرة

تعدد الأشكال هو أمر لا بد منه تعلم مفاهيم OOPs لأنه يوفر العديد من المزايا أثناء البرمجة. مع تعدد الأشكال ، يمكن للمستخدم إعادة تشكيل الفئات والرموز المختبرة. يفيد في تمديد البرمجة بنفسه. كما يسمح للمستخدم بتخزين متغيرات متعددة من النوع المختلفة مثل double أو Float أو Int أو Long في متغير واحد لتسهيل البحث عنها وتنفيذها.

إذا كنت مهتمًا بمعرفة المزيد حول OOPs ، وتطوير البرامج كاملة المكدس ، تحقق من upGrad & IIIT-B's دبلوم PG في تطوير البرامج الكامل المكدس المصمم للمهنيين العاملين ويقدم أكثر من 500 ساعة من التدريب الصارم ، وأكثر من 9 مشاريع والمهام ، وحالة خريجي IIIT-B ، ومشاريع التخرج العملية العملية والمساعدة في العمل مع الشركات الكبرى.

كن مطورًا للمكدس الكامل

الترقية و IIIT-BANGALORE دبلوم PG في تطوير البرامج
يتعلم أكثر