📄 bank.idl
字号:
// 信用卡管理系统的对象接口定义
module Bank {
// 利用盒装值类型定义信用卡卡号
valuetype Label string;
// 定义在信用卡管理中可能产生的异常
exception CardNumberDuplicated {}; // 开设账户时信用卡卡号重复
exception AccountNotBalanced {}; // 撤消账户时信用卡尚有余额
exception CardNumberNotFound {}; // 查找账户时信用卡卡号不存在
exception AccountOverdraft {}; // 取款或划账时信用卡余额透支
// 利用抽象值类型定义一个抽象的银行账户概念
abstract valuetype AbstractAccount {
// 向账户中存款amount元
void deposit(in float amount);
// 从账户中取款amount元,若余额不足则引发AccountOverdraft异常
void withdraw(in float amount) raises(AccountOverdraft);
// 查询账户的当前余额
float getBalance();
};
// 利用具体值类型定义具体银行账户,提供了账户的状态数据与初始化操作
valuetype Account: AbstractAccount {
// 内部属性(账户的当前余额)
private float balance;
// 初始化操作,将初始余额设置为init元
factory open(in float init);
};
// 信用卡是一种特殊的银行账户,故设计为银行账户的派生类型
valuetype CreditCard: Account {
// 内部属性(信用卡的透支限额)
private float overdraft;
// 初始化操作,将初始余额和透支限额分别设置为init元和limit元
factory open(in float init, in float limit);
};
// 信用卡管理员负责开设、查找或撤销信用卡账户
interface CreditCardManager {
// 新开卡号为num、余额为init的信用卡
CreditCard open(in Label num, in float init) raises(CardNumberDuplicated);
// 撤销卡号为num的信用卡
void close(in Label num) raises(CardNumberNotFound, AccountNotBalanced);
// 根据卡号num检索信用卡对象
CreditCard find(in Label num) raises(CardNumberNotFound);
// 从信用卡src划账amount元到信用卡des
void transfer(in CreditCard src, in CreditCard des, in float amount)
raises(AccountOverdraft);
};
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -