تنفيذ الميراث وتعدد الأشكال في رمز الوحدة
يتيح لك تطبيق inheritance وتعدد الأشكال في التعليمات البرمجية إنشاء فئات أكثر تخصصًا استنادًا إلى الفئات الموجودة، ومعاملة الكائنات من الفئات المختلفة ككائنات من فئة أساسية مشتركة. وهذا يعزز إعادة استخدام التعليمات البرمجية والمرونة وقابلية التوسع. فيما يلي مثال لتطبيق الوراثة وتعدد الأشكال في Unity:
ميراث
يتم تحقيق الوراثة عن طريق إنشاء فئة جديدة (فئة فرعية أو فئة مشتقة) استنادًا إلى فئة موجودة (فئة أصلية أو فئة أساسية). ترث الفئة الفرعية سمات وأساليب الفئة الأصلية ويمكنها إضافة سماتها وأساليبها الفريدة أو تعديل السمات والأساليب الموجودة. هنا مثال:
// Base class
public class Shape
{
public virtual void Draw()
{
Debug.Log("Drawing a shape...");
}
}
// Derived class
public class Circle : Shape
{
public override void Draw()
{
Debug.Log("Drawing a circle...");
}
}
في هذا المثال، الفئة 'Shape' هي الفئة الأساسية، والفئة 'Circle' مشتقة منها. تم تعريف الطريقة 'Draw()' في كلا الفئتين، لكن الفئة 'Circle' تتجاوز الطريقة لتوفير التنفيذ الخاص بها. يتيح لك ذلك تخصيص سلوك الفئة 'Circle' مع الحفاظ على السلوك المشترك المحدد في الفئة 'Shape'.
تعدد الأشكال
يسمح تعدد الأشكال بمعاملة الكائنات من فئات مختلفة على أنها objects من فئة أساسية مشتركة، مما يوفر المرونة ويسمح بالتعليمات البرمجية التي تعمل على الكائنات بشكل عام. هنا مثال:
void DrawShapes(Shape[] shapes)
{
foreach (Shape shape in shapes)
{
shape.Draw();
}
}
// Usage
Shape[] shapes = new Shape[] { new Circle(), new Shape() };
DrawShapes(shapes);
في هذا المثال، يقبل الأسلوب 'DrawShapes()' مصفوفة من الكائنات 'Shape'. يتكرر عبر المصفوفة ويستدعي الطريقة 'Draw()' على كل كائن. يحتوي المصفوفة على كائن 'Circle' وكائن أساسي 'Shape'. ومع ذلك، نظرًا لأن الفئة 'Circle' تتجاوز الطريقة 'Draw()'، فسيتم استدعاء التنفيذ المناسب لكل كائن بناءً على نوعه الفعلي في وقت التشغيل. وهذا يدل على تعدد الأشكال في العمل.
خاتمة
من خلال الاستفادة من الوراثة وتعدد الأشكال في كود Unity الخاص بك، يمكنك إنشاء فئات متخصصة بناءً على الفئات الموجودة، وتحديد السلوكيات المشتركة في الفئات الأساسية، وكتابة التعليمات البرمجية التي تعمل على الكائنات بشكل عام، مما يوفر المرونة ويعزز إعادة استخدام التعليمات البرمجية.