Product Design, Manufacturing & Innovation Resources
بيت » تعدد الأشكال (البرمجة)

تعدد الأشكال (البرمجة)

1967
  • Christopher Strachey
Computer programming workspace demonstrating polymorphism with code snippets.

(صورة توضيحية فقط)

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

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

على سبيل المثال، لنفترض وجود فئة أساسية باسم "Shape" تحتوي على دالة باسم "calculateArea()". يمكن للفئات الفرعية مثل "Circle" و"Rectangle" أن ترث من "Shape" وتوفر تطبيقاتها الخاصة للدالة "calculateArea()". بالتالي، يمكن للبرنامج أن يحتوي على قائمة من كائنات "Shape"، تتضمن مثيلات من "Circle" و"Rectangle". عند المرور على عناصر القائمة واستدعاء الدالة "calculateArea()" على كل عنصر، سيتم استخدام الصيغة الصحيحة لكل شكل تلقائيًا. يُغني هذا عن الحاجة إلى عبارات "if-else" أو "switch" المطولة للتحقق من نوع كل كائن، مما يؤدي إلى كود أكثر وضوحًا وقابلية للتوسيع. ويمكن إضافة أشكال جديدة إلى النظام دون تعديل الكود الذي يعالجها.

UNESCO Nomenclature: 1203
– Computer science

يكتب

نظام مجرد

خلل

Incremental

الاستخدام

استخدام واسع النطاق

مقدمات

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

التطبيقات

  • رسم أشكال مختلفة (دائرة، مربع) باستخدام استدعاء واحد للدالة draw()
  • معالجة أنواع مختلفة من المستندات (مثل PDF و Word) باستخدام دالة عامة باسم print()
  • التنفيذ واجهة المستخدم معالجات الأحداث
  • المجموعات العامة التي يمكنها أن تحتوي على كائنات من أنواع مختلفة ولكنها ذات صلة
  • أطر حقن التبعيات

براءات الاختراع:

NA

أفكار ابتكارية محتملة

  • تنسيقات تسلسل البيانات القابلة للتوصيل (على سبيل المثال، json، xml، protobuf) باستخدام واجهة مشتركة
  • برامج تشغيل الأجهزة العامة في نظام التشغيل لأجهزة مختلفة
  • نمط تصميم الاستراتيجية للخوارزميات القابلة للتبديل
  • خطوط أنابيب العرض العالمية في محركات الرسومات التي تتعامل مع أنواع مختلفة من المواد
  • أنظمة الوسيطة التي تعالج أنواعًا مختلفة من طلبات الشبكة
  • معالجات المعاملات المالية التي تتعامل مع طرق الدفع المختلفة (بطاقة الائتمان، باي بال، العملات المشفرة)
  • أطر عمل اختبار A/B التي يمكنها تبديل مكونات واجهة المستخدم المختلفة
  • خطوط أنابيب معالجة البيانات التي يمكنها الاتصال بمصادر بيانات مختلفة (قواعد البيانات، واجهات برمجة التطبيقات، والملفات)
  • أنظمة التحكم الروبوتية التي يمكنها تشغيل أنواع مختلفة من المحركات من خلال واجهة برمجة تطبيقات موحدة
  • مقدمي خوارزميات التشفير القابلة للتبديل في إطار أمني
يتعلق بـ: تعدد الأشكال، التجاوز، الإرسال الديناميكي، الربط المتأخر، النوع الفرعي، الواجهة، التجريد، البرمجة الكائنية، تجاوز الأساليب، وقت التشغيل.

السياق التاريخي

تعدد الأشكال (البرمجة)

1956
1960
1967
1967
1970
1970
1970
1953
1960
1960
1967
1970
1970
1970
1970

(إذا كان التاريخ غير معروف أو غير ذي صلة، على سبيل المثال "ميكانيكا الموائع"، يتم توفير تقدير تقريبي لظهوره الملحوظ)

أحدث الإضافات

أهم المنشورات والمقالات

أفضل الأدوات الأصلية

السنة العاشرة عيد

الصور والتنزيلات بالحجم الكامل متاحة فقط، ومجانية تمامًا، للأعضاء المسجلين.