مراجعة - مدير الحسابات البنكية
جزء من قسم البرمجة كائنية التوجّه في رحلة GDScript على Coddy. الدرس 14 من 65.
التحدي
متوسطاكتب الصنف BankAccount في الملف bank_account.gd. فهو يجمع كل ما تعلمته في هذا الفصل.
- متغير
intثابتinterest_percentيبدأ بقيمة2، وتشترك فيه جميع الحسابات - خاصيتان خاصتان:
_owner_name(من النوعString) و_balance(من النوعintويبدأ بقيمة0) - خاصية للقراءة فقط
owner_name، يعيد المُ getter فيها القيمة_owner_name - خاصية
balance، يعيد المُ getter فيها القيمة_balance، بينما يطبع المُ setter القيمةBalance cannot be negativeإذا كانت سالبة، وإلا يخزّن القيمة في_balance - المُنشئ
_init(account_owner, start_balance)يخزّن اسم المالك ويُسنِدstart_balanceإلىbalance، لكي يتحقق منها المُ setter
وهذه الطرق:
deposit(amount): تطبعDeposit amount must be positiveوتُعيدfalseعندما تكونamountتساوي0أو أقل؛ وإلا تضيفها وتُعيدtruewithdraw(amount): تطبعWithdrawal amount must be positiveوتُعيدfalseعندما تكونamountتساوي0أو أقل، وتطبعInsufficient fundsوتُعيدfalseعندما تكون أكبر من الرصيد؛ وإلا تطرحها وتُعيدtrueapply_interest(): تضيف_balance * interest_percent / 100(بالدولارات الكاملة) إلى الرصيد وتُعيد قيمة الفائدةdisplay_info(): تطبع ثلاثة أسطر:Account Owner: NAMEوBalance: $BALANCEوInterest Rate: PERCENT%
يقرأ الكود المُقدَّم owner start_balance، وعدد الأوامر التالية، والأوامر deposit N وwithdraw N وset N (يُسنِد قيمة إلى balance) وinterest وrate N (يضبط BankAccount.interest_percent) وinfo. ويطبع سطرًا لكل عملية إيداع وسحب ودفع فائدة ناجحة، ثم يطبع رصيد المالك في النهاية. عند إدخال Coddy 1000 والأوامر deposit 500 وwithdraw 200 وinterest وinfo وset 5000 وwithdraw 10000، يطبع:
Deposited $500
Withdrew $200
Interest earned: $26
Account Owner: Coddy
Balance: $1326
Interest Rate: 2%
Insufficient funds
Coddy has $5000اكتب الكود في bank_account.gd. يحتوي main.gd على كود الإدخال والإخراج المُقدَّم، ولا يمكن تعديله.
جرّب بنفسك
extends Node
func _ready():
# كود الإدخال/الإخراج المقدَّم: اتركه كما هو
var first := OS.read_string_from_stdin().split(" ")
var account := BankAccount.new(first[0], int(first[1]))
var count := int(OS.read_string_from_stdin())
for i in count:
var parts := OS.read_string_from_stdin().split(" ")
match parts[0]:
"deposit":
if account.deposit(int(parts[1])):
print("Deposited $%s" % parts[1])
"withdraw":
if account.withdraw(int(parts[1])):
print("Withdrew $%s" % parts[1])
"set":
account.balance = int(parts[1])
"interest":
print("Interest earned: $%d" % account.apply_interest())
"rate":
BankAccount.interest_percent = int(parts[1])
"info":
account.display_info()
print("%s has $%d" % [account.owner_name, account.balance])
جميع دروس البرمجة كائنية التوجّه
1أساسيات البرمجة كائنية التوجه
الملفات الخارجيةمقدمة إلى البرمجة كائنية التوجهالفئات مقابل الكائناتالكلمة المفتاحية selfالأساليبالخصائصالمُنشئ (_init)مراجعة - آلة حاسبة بسيطة4تعدد الأشكال
إعادة النظر في تجاوز الأساليبكتابة الأنواع بأسلوب البطةالفئات والأساليب المجرّدةتصميم الواجهاتمراجعة - حاسبة الأشكال10أنماط التصميم، الجزء الثاني
نمط الأوامرنمط المحوّلنمط المُزيّننمط الطريقة القالبيةنمط الحالةالنمط المركّب2خصائص الأصناف
متغيرات الكائن مقابل المتغيرات الساكنةالدوال الساكنةمُعيِّنات الخصائصمُسترجِعات الخصائصخاص وفقًا للاتفاقيةمراجعة - مدير الحسابات البنكية5التغليف
الأعضاء العامة والخاصةالتحقق من الصحة باستخدام دوال الضبطإخفاء المعلوماتالخصائص للقراءة فقطمراجعة - نظام سجلات الطلاب8مفاهيم متقدمة في البرمجة كائنية التوجه
التركيب مقابل الوراثةالأصناف الداخليةالعُقد كمكوّناتRefCounted مقابل Nodeالتعدادات في الأصنافتدرّب بنفسك: مترجم GDScript عبر الإنترنت