Menu
CoddyTech

Ôn tập: trình quản lý tài khoản ngân hàng

Thuộc phần Lập trình hướng đối tượng trong hành trình GDScript của Coddy. Bài học 14 trên 65.

challenge icon

Thử thách

Trung bình

Viết lớp BankAccount trong bank_account.gd. Lớp này tổng hợp mọi kiến thức trong chương này.

  • Một biến int tĩnh interest_percent bắt đầu bằng 2, dùng chung cho tất cả tài khoản
  • Hai thuộc tính riêng tư: _owner_name (kiểu String) và _balance (kiểu int, bắt đầu bằng 0)
  • Một thuộc tính chỉ đọc owner_name có getter trả về _owner_name
  • Một thuộc tính balance có getter trả về _balance và setter in ra Balance cannot be negative nếu giá trị âm, nếu không thì lưu giá trị vào _balance
  • Hàm khởi tạo _init(account_owner, start_balance) lưu tên chủ tài khoản và gán start_balance cho balance, để setter kiểm tra giá trị

Và các phương thức sau:

  • deposit(amount): in ra Deposit amount must be positive và trả về false khi amount bằng 0 hoặc nhỏ hơn; nếu không, cộng số tiền đó vào số dư và trả về true
  • withdraw(amount): in ra Withdrawal amount must be positive và trả về false khi amount bằng 0 hoặc nhỏ hơn; in ra Insufficient funds và trả về false khi số tiền đó lớn hơn số dư; nếu không, trừ số tiền đó khỏi số dư và trả về true
  • apply_interest(): cộng _balance * interest_percent / 100 (số tiền nguyên đô la) vào số dư và trả về tiền lãi đó
  • display_info(): in ra ba dòng, Account Owner: NAME, Balance: $BALANCE và Interest Rate: PERCENT%

Code được cung cấp đọc owner start_balance, số lượng lệnh tiếp theo và các lệnh deposit N, withdraw N, set N (gán giá trị cho balance), interest, rate N (đặt BankAccount.interest_percent) và info. Code in ra một dòng cho mỗi lần gửi tiền, rút tiền và nhận lãi thành công, cùng với số dư của chủ tài khoản ở cuối. Với Coddy 1000 và các lệnh deposit 500, withdraw 200, interest, info, set 5000 và withdraw 10000, chương trình in ra:

Deposited $500
Withdrew $200
Interest earned: $26
Account Owner: Coddy
Balance: $1326
Interest Rate: 2%
Insufficient funds
Coddy has $5000

Đặt code của bạn trong bank_account.gd. main.gd chứa code đầu vào/đầu ra được cung cấp và không thể chỉnh sửa.

Tự làm thử

extends Node

func _ready():
	# Đoạn code đầu vào/đầu ra có sẵn: giữ nguyên
	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])

Tất cả bài học trong Lập trình hướng đối tượng

Tự luyện tập: Trình biên dịch GDScript online