⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bank.idl

📁 利用CORBA的值类型实现的一个分布式程序
💻 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 + -