总结:银行账户管理器
本课属于 Coddy GDScript 学习旅程的“面向对象编程”单元。第 14 课,共 65 课。
挑战
中等在 bank_account.gd 中编写 BankAccount 类。它综合运用了本章的所有内容。
- 一个静态
int变量interest_percent,初始值为2,由所有账户共享 - 两个私有属性:
_owner_name(一个String)和_balance(一个初始值为0的int) - 一个只读属性
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):当amount小于或等于0时,打印Deposit amount must be positive并返回false;否则将其加到账户余额中并返回truewithdraw(amount):当amount小于或等于0时,打印Withdrawal amount must be positive并返回false;当其大于余额时,打印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])
面向对象编程中的所有课
自己练习: GDScript 在线编译器