الأساليب
جزء من قسم البرمجة كائنية التوجّه في رحلة GDScript على Coddy. الدرس 5 من 65.
الدالة المُعلنة داخل صنف هي طريقة: شيء تستطيع كائنات الصنف القيام به. مثل أي دالة، يمكن للطريقة أن تأخذ معاملات وتُرجع قيمة، كما يمكنها قراءة متغيرات الكائن وتغييرها:
# score_board.gd
class_name ScoreBoard
extends RefCounted
var points: int = 0
func greet() -> void:
print("Scoreboard ready")
func add(amount: int) -> void:
points += amount
func doubled() -> int:
return points * 2
func add_bonus() -> int:
add(10)
return pointsاستدعِ طريقة على كائن باستخدام نقطة، ومرّر الوسائط بين القوسين:
var board := ScoreBoard.new()
board.greet() # لوحة النتائج جاهزة
board.add(5)
print(board.doubled()) # 10
print(board.add_bonus()) # 15داخل الصنف، تستدعي إحدى الطرق طريقةً أخرى في الكائن نفسه باسمها: تعني add(10) في add_bonus() self.add(10).
الطريقة المُعرَّفة باستخدام -> void لا تُرجع شيئًا، والطريقة المُعرَّفة باستخدام -> int يجب أن تُرجع قيمة من النوع int. يعمل كل استدعاء على كائنه الخاص: يغيّر board.add(5) قيمة board.points ولا يغيّر أي لوحة نتائج أخرى.
يجب أن يتطابق الاستدعاء مع التصريح: يُعدّ board.add() من دون وسيطة خطأً يُبلَّغ عنه قبل تشغيل البرنامج.
التحدي
سهلأكمل أساليب الصنف BankAccount في الملف bank_account.gd. يحتفظ الحساب بأمواله في المتغير balance، الذي تبدأ قيمته عند 0.
- تضيف
deposit(amount)القيمةamountإلى الرصيد - تطرح
withdraw(amount)القيمةamountوتُرجعtrue. عندما تكونamountأكبر من الرصيد، لا تغيّر شيئًا وتُرجعfalse - تُرجع
get_balance()الرصيد
يقرأ الكود المرفق عدد الأوامر التالية، ثم يقرأ أمرًا واحدًا في كل سطر: deposit AMOUNT أو withdraw AMOUNT. يطبع سطرًا لكل أمر، ثم يطبع الرصيد النهائي. عند إدخال deposit 50 وwithdraw 80، يطبع:
Deposited 50
Not enough money for 80
Current balance: $50ضع الكود في bank_account.gd. يحتوي main.gd على كود الإدخال والإخراج المرفق، ولا يمكن تعديله.
جرّب بنفسك
extends Node
func _ready():
# شيفرة الإدخال والإخراج المقدَّمة: أبقِها كما هي
var account := BankAccount.new()
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
var amount := int(parts[1])
if parts[0] == "deposit":
account.deposit(amount)
print("Deposited %d" % amount)
elif account.withdraw(amount):
print("Withdrew %d" % amount)
else:
print("Not enough money for %d" % amount)
print("Current balance: $%d" % account.get_balance())
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجّه
1أساسيات البرمجة كائنية التوجه
الملفات الخارجيةمقدمة إلى البرمجة كائنية التوجهالفئات مقابل الكائناتالكلمة المفتاحية selfالأساليبالخصائصالمُنشئ (_init)مراجعة - آلة حاسبة بسيطة4تعدد الأشكال
إعادة النظر في تجاوز الأساليبكتابة الأنواع بأسلوب البطةالفئات والأساليب المجرّدةتصميم الواجهاتمراجعة - حاسبة الأشكال10أنماط التصميم، الجزء الثاني
نمط الأوامرنمط المحوّلنمط المُزيّننمط الطريقة القالبيةنمط الحالةالنمط المركّب2خصائص الأصناف
متغيرات الكائن مقابل المتغيرات الساكنةالدوال الساكنةمُعيِّنات الخصائصمُسترجِعات الخصائصخاص وفقًا للاتفاقيةمراجعة - مدير الحسابات البنكية5التغليف
الأعضاء العامة والخاصةالتحقق من الصحة باستخدام دوال الضبطإخفاء المعلوماتالخصائص للقراءة فقطمراجعة - نظام سجلات الطلاب8مفاهيم متقدمة في البرمجة كائنية التوجه
التركيب مقابل الوراثةالأصناف الداخليةالعُقد كمكوّناتRefCounted مقابل Nodeالتعدادات في الأصنافتدرّب بنفسك: مترجم GDScript عبر الإنترنت