اذهب إلى المحتوى
  • 0

ماذا يعني تعدد الأشكال Polymorphism ولم يستخدم؟

عامر بيرادي

السؤال

أقرأ منذ فترة عن البرمجة غرضية التوجه OOP ومفاهيمها ومر معي مفهوم تعدد الأشكال Polymorphism ومازال المفهوم لدي غير واضح ولا اعلم متى يجب استخدامه ولماذا؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 2

تعني Polymorphism قدرة الغرض أو الكائن object على أن يأخذ عدة أشكال. الاستخدام الأكثر شيوعًا للـ Polymorphism في البرمجية غرضية التوجه يحدث عندما يُستخدم صف أب parent class للإشارة إلى صف يرث منه child class. أي غرض يمكنه اجتياز أكثر من اختبار علاقة IS-A يعتبر غرض متعدد الأشكال Polymorphism ونرى هذا بشكل واضح جدًا في بنية صفوف لغة جافا.

تعني علاقة IS-A ان الصف الابن child class ينتمي للصف الذي يرث منه وكذلك الصف الذي يرث منه قد يرث من صف آخر وينتمي إليه أيضًا أو يرث من صفين ينتمي لهما معًا (نجد هذا بشكل واضح في لغة جافا بعلاقة الـ interface و الـ class).

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

public interface Vegetarian{}
public class Animal{}
public class Deer extends Animal implements Vegetarian{}
  • A Deer IS-A Animal
  • A Deer IS-A Vegetarian
  • A Deer IS-A Deer

مثال آخر على تعدد الأشكال Polymorphism تخيل معي الأشكال التالية: (مستطيل، مربع، مثلث، شكل سداسي..الخ) أليست تنتمي إلى فئة واحدة وهي المضلعات؟ أي أن جميع هذه الأشكال هي مضلع وتختلف بعدد أضلاعها.

إذًا يمكننا إنشاء صف polygon ونجعل الصفوف التي تحدد الأشكال ترث منه ومن ثم نستخدم المرجع reference من الصف polygon لإنشاء غرض object من أي نوع من تلك الأشكال:

Polygon p = new Rectangle();
or
Polygon p = new Triangle()
....

polymorphism.thumb.png.76da317b0173c1ab7

ماذا يعني تعدد الأشكال Polymorphism ولم يستخدم؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...