Menu
CoddyTech
flag Ar iconالعربيةdown icon

مقدمة إلى البرمجة كائنية التوجه

جزء من قسم البرمجة كائنية التوجّه في رحلة 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() مرتين يمنحك سيارتين.

challenge icon

التحدي

سهل

أنشئ الصنف 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)
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس البرمجة كائنية التوجّه

تدرّب بنفسك: مترجم GDScript عبر الإنترنت