كاتب مقالات
جامعة دمشق (سوريا)

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

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

تنقسم تعدد الأشكال في جافا بشكل رئيسي إلى نوعين:

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

يجب أن تختلف مجموعات المعلمات في واحد على الأقل من المعايير الثلاثة التالية:

  • يجب أن يكون لديهم عدد مختلف من المعلمات. على سبيل المثال، يقبل أسلوب واحد 2 و 3 معلمات أخرى.
  • يجب أن تكون أنواع المعلمات مختلفة. على سبيل المثال، طريقة واحدة تقبل سلسلة وأخرى طويلة.
  • يحتاجون إلى توقع المعلمات بترتيب مختلف. علىسبيل المثال، طريقة واحدة تقبل سلسلة وطويلة وأخرى تقبل سلسلة طويلة وسلسلة، لا يوصى بهذا النوع من التحميل الزائد لأنه يجعل من الصعب فهم واجهة برمجة التطبيقات.

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

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

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

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

أكمل القراءة

0

هل لديك إجابة على "ما معنى تعدد الأشكال polymorphism"؟