تعدد الأوجه (Polymorphism) هو واحد من أهم مفاهيم البرمجة كائنية التوجه وهو في الأصل يستخدم مفهوما آخر وهو مفهوم الوراثة والذي بدوره يتيح لكل الفئات أن ترث محتوى فئة أخرى علي أن يكون لكل "فئة ابن" فئة أب واحدة فقط (حتى لا تقع البرمجة في مشكلة الماسة) فعن طريق الوراثة تستطيع الفئة الابن وراثة الدوال داخل الفئة الأب وأيضا نسخ تلك الدوال أو بعضها لتعديل تنفيذ خاص بالفئة الابن.[1]
استخدامات تعدد الأوجه
لتعدد الأوجه استخدامات عدة ويستطيع المطور أن يستخدمها بطرق مختلفة لكن المفهوم واحد ويضرب كثير من معلمي البرمجة أمثلة كثيرة على استخدامات تعدد الأوجه ومنها ما يلي:
- يمكننا تخيل برنامج مطلوب منه رسم أشكال هندسية مثل دائرة، مربع, مستطيل ومثلث ولهذا البرنامج أن يحدد أيضا مساحة كل شكل من الأشكال؛ في هذه الحالة يمكننا تخيل التصميم علي الفئات فمثلا يمكن أن يكون لدينا فئة أب "شكل" وكل شكل من الأشكال يكون ابنا لهذه الفئة الأب. (الفئة الأب يمكن أن تكون في حالتنا "فئة مجردة" لأنه لا يمكن إنشاء كائن من نوع شكل في مثالنا) هذه الفئة الأب تتضمن دالة مشتركة بين كل الأشكال ونسميها "احسب_المساحة() لذا ستتضمن الفئات كلها تنفيذا لهذه الدالة وبهذه الطريقة يمكننا استخدام تنفيذ مختلف حسب الكائن المنشئ فيمكننا إنشاء كائن من نوع دائرة وايكاله لمتغير من نوع شكل ففي هذه الحالة يكون الكائن المنشئ في الذاكرة من نوع دائرة لذا فتنفيذ دالة "احسب_المساحة" سيكون التنفيذ المكتوب في فئة دائرة
- مثال آخر يضربه المعلمون لتجسيد مفهوم تعدد الأوجه، المثال هو تجسيد لفئة اسمها "مركبة" وهذه المركبة في حياتنا قد تكون سيارة، سفينة, طائرة أو حتى دراجة. كل أنواع المركبات لها عدة أفعال متشابهة مثل التحرك ولكن لكل منها طريقته في التحرك فمثلا السيارة تتحرك بطريقة مغايرة عن السفينة والطائرة. ولكل منهم خصائص غير موجودة في الآخرين لذلك ففي الفئة الأب يمكن أن نكتب دالة مجردة لكل خاصية مشتركة بين كل تلك الأنواع وفي كل فئة نكتب كيفية التنفيذ لكل دالة مشتركة وأيضًا يمكننا إضافة دوال خاصة بالفئة إذا كانت هناك خصائص مختلفة.
المراجع
- Kathy., Sierra, (2008). SCJP Sun certified programmer for Java 6 study guide : exam (310-065). New York: McGraw-Hill. . OCLC 231680413. مؤرشف من الأصل في 15 ديسمبر 2019.