تطبيق مبادئ البرمجة كائنية التوجه في جودو
يقدّم محرك جودوت طريقتان أساسيتان لإنشاء الكائنات التي يمكنك إعادة استخدامها ألا وهما السكربتات scripts والمشاهد scenes، إلا أنهما لا يعرّفان الأصناف التي يستخدمانها في الحقيقة.
مع ذلك، تتضمن معظم ممارسات جودو المثلى تطبيق مبادئ البرمجة كائنية التوجه على الشيفرات البرمجية والمشاهد التي تشكّل لعبتك، ولهذا فمن الهام كيف يمكن النظر إليهما بكونهما أصنافًا.
سنتكلم هنا بشكل مختصر عن كيفية عمل السكربتات والمشاهد مع نواة المحرك لمساعدتك على فهم حقيقة عملهما.
كيف تعمل الملفات النصية البرمجية في المحرك
يقدم المحرك أصنافًا مضمّنة مثل العقد Nodes التي يمكنك الإضافة عليها لإنشاء أنواع مشتقة منها باستخدام شيفرة برمجية، ولا تُعدّ هذه الشيفرات البرمجية أصنافًا في حقيقة الأمر، بل هي موارد تأمر المحرك بتنفيذ سلسلة من الأوامر على صنف من أصناف المحرك المُضمّنة.
لأصناف جودو المضمّنة توابع methods تخزّن بيانات الصنف باستخدام ClassDB
، وتقدم قاعدة البيانات هذه وصولًا عند وقت التنفيذ إلى معلومات الصنف. إذ يحتوي ClassDB
على عدد من المعلومات حول الصنف مثل:
- الخصائص.
- التوابع.
- الثوابت.
- الإشارات.
تُطابَق الكائنات مع ClassDB
عند إجراء العمليات مثل الوصول إلى خاصية ما أو استدعاء تابع، إذ تتم المطابقة مع قاعدة البيانات وبيانات نوع الكائن الأساسي للتأكد من أن الكائن يدعم العملية قيد التنفيذ.
ربط سكربت مع الكائن يُضيف على توابعه وخصائصه وإشاراته المتاحة من ClassDB
.
ترث السكربتات التي لا تستخدم الكلمة المفتاحية extends
بشكل صريح من صنف المحرك الأساسي RefCounted
، وكنتيجة لذلك لا يمكنك إنشاء نسخة من سكربت دون استخدام extends
بداخلها، كما أنه لا يمكنك ربط سكربت مع عقدة بالنظر إلى أنه يستخدم RefCounted
.
المشاهد
يُشابه سلوك المشاهد سلوك الأصناف بشكل كبير، لذا يمكنك التفكير بها بكونها أصنافًا لتسهيل عملية فهمها. الأصناف قابلة لإعادة الاستخدام والنسخ وهي تمثّل مجموعة من العقد تقبل الوراثة، فعملية إنشاء المشهد مشابهة جدًا لوجود شيفرة برمجية تُنشئ عقدة وتضيفها كعقدة ابن باستخدام add_child()
.
غالبًا ما نستخدم المشهد مع عقدة سكربت جذر scripted root node بحيث تتحكم بالعقد الموجودة في المشهد، وبهذا يمكن للشيفرة أن تُضيف على المشهد سلوكًا جديدًا عن طريقها.
يساعد محتوى المشهد على تعريف كل من:
- العُقد المتاحة للشيفرة البرمجية.
- طريقة تنظيم العقد.
- كيفية ضبط العقد بشكل أولي.
- ارتباطات الإشارات التي تمتلكها العقد مع بعضها البعض.
كيف يرتبط ما سبق بتنظيم المشاهد؟ لأن نُسخ المشاهد تمثّل كائنات في نهاية المطاف، وكنتيجة لذلك يمكن تطبيق العديد من مبادئ البرمجة كائنية التوجه التي تنطبق على الشيفرة المكتوبة بدورها مثل المسؤولية الواحدة single responsibility والتغليف encapsulation وغيرها.
المشهد يمثل امتدادًا للشيفرة البرمجية المرتبطة بالعقدة الجذر، لذا يمكنك النظر إليه بكونه جزءً من صنف، فمعظم التقنيات التي سنناقشها في سلسلة الممارسات المثلى هذه مبنية على أساس هذا الافتراض.