Ô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.
Thử thách
Trung bìnhViế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
inttĩnhinterest_percentbắt đầu bằng2, dùng chung cho tất cả tài khoản - Hai thuộc tính riêng tư:
_owner_name(kiểuString) và_balance(kiểuint, bắt đầu bằng0) - Một thuộc tính chỉ đọc
owner_namecó getter trả về_owner_name - Một thuộc tính
balancecó getter trả về_balancevà setter in raBalance cannot be negativenế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ánstart_balancechobalance, để setter kiểm tra giá trị
Và các phương thức sau:
deposit(amount): in raDeposit amount must be positivevà trả vềfalsekhiamountbằng0hoặc nhỏ hơn; nếu không, cộng số tiền đó vào số dư và trả vềtruewithdraw(amount): in raWithdrawal amount must be positivevà trả vềfalsekhiamountbằng0hoặc nhỏ hơn; in raInsufficient fundsvà trả vềfalsekhi số tiền đó lớn hơn số dư; nếu không, trừ số tiền đó khỏi số dư và trả vềtrueapply_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: $BALANCEvà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
1Nền tảng về OOP
Tệp bên ngoàiGiới thiệu về OOPLớp và đối tượngTừ khóa selfPhương thứcThuộc tínhHàm khởi tạo (_init)Ôn tập: máy tính đơn giản4Tính đa hình
Xem lại cách ghi đè phương thứcĐịnh kiểu vịtLớp và phương thức trừu tượngThiết kế interfaceÔn tập: máy tính hình học7Tín hiệu
Tín hiệu là gì?Khai báo và phát tín hiệuKết nối với tín hiệuTín hiệu có đối sốÔn tập: hệ thống sức khỏe10Các mẫu thiết kế phần 2
Mẫu lệnhMẫu bộ chuyển đổiMẫu trang tríMẫu phương thức khuôn mẫuMẫu trạng tháiMẫu tổng hợp2Thuộc tính của lớp
Biến instance và biến staticHàm staticPhương thức thiết lập thuộc tínhPhương thức lấy thuộc tínhQuy ước về tính riêng tưÔn tập: trình quản lý tài khoản ngân hàng5Tính đóng gói
Thành viên công khai và riêng tưXác thực bằng phương thức setterẨn thông tinThuộc tính chỉ đọcÔn tập: hệ thống hồ sơ học sinh8Khái niệm OOP nâng cao
Kết hợp và kế thừaLớp bên trongNode dưới dạng thành phầnRefCounted và NodeEnum trong lớpTự luyện tập: Trình biên dịch GDScript online