回顾:银行账户管理器
本课属于 Coddy Dart 学习旅程的“面向对象编程”单元。第 22 课,共 110 课。
挑战
简单让我们来构建一个银行账户管理系统,把你在本章学到的所有类属性概念结合起来。你将创建一个系统,用来跟踪各个账户的数据,同时维护整个银行的统计信息。
你需要将代码分成两个文件:
bank_account.dart:定义一个管理各个账户并跟踪银行整体统计信息的BankAccount类。你的类应包含:- 一个创建后不可更改的
final String accountNumber - 一个用于存储账户持有人姓名的
String holderName - 一个初始值为
0.0的私有double _balance字段 - 一个初始值为
0的static int totalAccounts,用于跟踪现有账户的数量 - 一个初始值为
0.0的static double totalDeposits,用于跟踪整个银行的所有存款 - 一个接收
accountNumber和holderName,并递增totalAccounts的构造函数 - 一个返回当前余额的 getter
balance - 一个
deposit(double amount)方法,仅当金额为正数时才增加余额,并在存款成功时同时增加totalDeposits - 一个
withdraw(double amount)方法,仅当金额为正数且不超过当前余额时才从余额中扣除 - 一个打印账户详情的
displayInfo()方法 - 一个返回银行整体统计信息字符串的静态方法
getBankStats()
- 一个创建后不可更改的
main.dart:导入你的银行账户类,并演示这个系统:- 创建一个账户,账户号码为
'ACC001',持有人为'Alice' - 创建一个账户,账户号码为
'ACC002',持有人为'Bob' - 向 Alice 的账户存入
500.0 - 向 Bob 的账户存入
300.0 - 从 Alice 的账户取出
150.0 - 尝试从 Bob 的账户取出
1000.0(应被忽略,余额不足) - 尝试向 Alice 的账户存入
-50.0(应被忽略,金额为负数) - 先对 Alice 的账户调用
displayInfo(),再对 Bob 的账户调用 - 使用
BankAccount.getBankStats()打印银行统计信息
- 创建一个账户,账户号码为
displayInfo() 方法应按以下格式打印:
Account [accountNumber] | Holder: [holderName] | Balance: $[balance]getBankStats() 方法应返回:
Bank Stats - Total Accounts: [totalAccounts] | Total Deposits: $[totalDeposits]预期输出:
Account ACC001 | Holder: Alice | Balance: $350.0
Account ACC002 | Holder: Bob | Balance: $300.0
Bank Stats - Total Accounts: 2 | Total Deposits: $800.0亲手试试
import 'bank_account.dart';
void main() {
// TODO: 为 'Alice' 创建账号为 'ACC001' 的账户
// TODO: 为 'Bob' 创建账号为 'ACC002' 的账户
// TODO: 向 Alice 的账户存入 500.0
// TODO: 向 Bob 的账户存入 300.0
// TODO: 从 Alice 的账户取出 150.0
// TODO: 尝试从 Bob 的账户取出 1000.0(应忽略这次操作)
// TODO: 尝试向 Alice 的账户存入 -50.0(应忽略这次操作)
// TODO: 对 Alice 的账户调用 displayInfo()
// TODO: 对 Bob 的账户调用 displayInfo()
// TODO: 使用 BankAccount.getBankStats() 打印银行统计信息
}
面向对象编程中的所有课
自己练习: Dart 在线编译器