مقدمة إلى البرمجة كائنية التوجه
جزء من قسم البرمجة كائنية التوجّه في رحلة GDScript على Coddy. الدرس 2 من 65.
تنظّم البرمجة كائنية التوجه (OOP) البرنامج حول الكائنات. يجمع الكائن البيانات (المتغيرات) مع الدوال التي تعمل على تلك البيانات. تصف الفئة ما تحتويه كائناتها وما تفعله، ويمكنك إنشاء العدد الذي تحتاج إليه من الكائنات منها.
في GDScript، كل ملف نص برمجي هو فئة. سمِّها باستخدام class_name وصرّح عن المتغيرات التي يحملها كل كائن:
# car.gd
class_name Car
extends RefCounted
var brand: String = "Generic"
var wheels: int = 4يجعل extends RefCounted Godot يحرر كائن Car تلقائيًا بمجرد ألا يعود أي متغير يشير إليه. استخدمه لكل فئة تحتوي على بيانات وليست عقدة. يمتد البرنامج النصي الذي لا يحتوي على سطر extends إلى RefCounted أيضًا.
استدعِ new() على الصنف لإنشاء كائن، ثم صِل إلى متغيراته باستخدام نقطة:
# main.gd
var my_car := Car.new()
print(my_car.wheels) # 4
print(my_car is Car) # trueيتحقق العامل is من الصنف الذي أُنشئ منه الكائن. لا تُظهر طباعة الكائن نفسه سوى معرّف مثل <RefCounted#-9223372009860233781>، لذا اطبع متغيراته بدلًا من ذلك.
الصنف هو المخطط، وكل كائن هو شيء مستقل مبني منه: استدعاء Car.new() مرتين يمنحك سيارتين.
التحدي
سهلأنشئ الصنف Car في car.gd:
- اسم الصنف هو
Carوهو يمتد منRefCounted - متغير
Stringباسمbrandوتكون قيمته الابتدائية"Generic" - متغير
intباسمwheelsوتكون قيمته الابتدائية4
يقرأ الكود المرفق عدد السيارات المطلوب إنشاؤها، وينشئ كل واحدة باستخدام Car.new(). ثم يطبع عدد السيارات ومجموع عجلاتها. عند إنشاء سيارة واحدة على الأقل، يقرأ علامة تجارية للسيارة الأولى ويطبع علامتي السيارة الأولى والأخيرة. عند إدخال 3 وTesla، يطبع:
Cars: 3
Wheels: 12
First car: Tesla
Last car: Genericضع الكود في car.gd. يحتوي main.gd على كود الإدخال والإخراج المرفق، ولا يمكن تعديله.
جرّب بنفسك
extends Node
func _ready():
# كود الإدخال/الإخراج المقدَّم: اتركه كما هو
var count := int(OS.read_string_from_stdin())
var garage: Array[Car] = []
for i in count:
garage.append(Car.new())
var total := 0
for car in garage:
total += car.wheels
print("Cars: %d" % garage.size())
print("Wheels: %d" % total)
if count > 0:
garage[0].brand = OS.read_string_from_stdin()
print("First car: %s" % garage[0].brand)
print("Last car: %s" % garage[-1].brand)
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجّه
1أساسيات البرمجة كائنية التوجه
الملفات الخارجيةمقدمة إلى البرمجة كائنية التوجهالفئات مقابل الكائناتالكلمة المفتاحية selfالأساليبالخصائصالمُنشئ (_init)مراجعة - آلة حاسبة بسيطة4تعدد الأشكال
إعادة النظر في تجاوز الأساليبكتابة الأنواع بأسلوب البطةالفئات والأساليب المجرّدةتصميم الواجهاتمراجعة - حاسبة الأشكال10أنماط التصميم، الجزء الثاني
نمط الأوامرنمط المحوّلنمط المُزيّننمط الطريقة القالبيةنمط الحالةالنمط المركّب2خصائص الأصناف
متغيرات الكائن مقابل المتغيرات الساكنةالدوال الساكنةمُعيِّنات الخصائصمُسترجِعات الخصائصخاص وفقًا للاتفاقيةمراجعة - مدير الحسابات البنكية5التغليف
الأعضاء العامة والخاصةالتحقق من الصحة باستخدام دوال الضبطإخفاء المعلوماتالخصائص للقراءة فقطمراجعة - نظام سجلات الطلاب8مفاهيم متقدمة في البرمجة كائنية التوجه
التركيب مقابل الوراثةالأصناف الداخليةالعُقد كمكوّناتRefCounted مقابل Nodeالتعدادات في الأصنافتدرّب بنفسك: مترجم GDScript عبر الإنترنت