利用多态性技术实现一个信用卡付账系统

来源:百度知道 编辑:UC知道 时间:2024/05/09 03:23:08
系统可以使用三个银行的信用卡,其中一个是本地银行,两个是跨地区银行;跨地区银行提供的信用卡又分为本地卡、外地卡和通存通兑卡。系统实现的功能有:取款、查询、付账和转账,但不处理外地卡付账。

针对 3 个银行卡的业务特征进行分析,归纳出共同特征封装为基类和接口,如:

注:“(...)” 括号内的省略号,表示方法的形参。

interface 接口
{
// 接口方法
bool 取款(...);
bool 查询(...);
bool 付账(...);
bool 转帐(...);

// 接口访问器,获取是否支持指定的操作
bool 支持取款{ get; }
bool 支持查询{ get; }
bool 支持付款{ get; }
bool 支持转帐{ get; }
}

从接口继承基类,实现共同的业务处理,不同的业务逻辑由子类实现(如:不处理外地卡付账)
public class 基类 : 接口
{
//...........
此处为共同业务处理,接口方法和访问器的实现(若子类需要自行处理,可定义为虚方法和虚访问器,也可为抽象的)
//...........

//因为不处理外地卡付账(不同的业务由子类实现),所以我们这里定义为虚方法(也可是抽象方法)
public virtual bool 付款(...) // 虚方法,有子类重写
{
// 此处的代码,为常规付款的业务
}
public virtual bool 支持付款 // 虚访问器,由子类重写
{
get { return true; } // 默认支持付款
}
}

// 从基类继承 3 个子类表示三个银行的信用卡的处理
public class 银行卡1(本地的) : 基类
{
// 若需更改父类某些行为,在该类里面重写父类方法,实现自己的业务
}

public class 银行卡2(跨地区的): 基类
{

// 重写父类方法,抛出异常表示不支持该业务
public override bool 付款(...)