首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C++代码,将应填入(n)________处的字句写在对应栏内。 【说明】 现如今线下支付系统可以使用现金(Cash)、移动支付、银行卡(Card)(信用卡(CreditCard)和储蓄卡(DebitCard))等多种支付方式(Pay
阅读下列说明和C++代码,将应填入(n)________处的字句写在对应栏内。 【说明】 现如今线下支付系统可以使用现金(Cash)、移动支付、银行卡(Card)(信用卡(CreditCard)和储蓄卡(DebitCard))等多种支付方式(Pay
admin
2021-03-13
38
问题
阅读下列说明和C++代码,将应填入(n)________处的字句写在对应栏内。
【说明】
现如今线下支付系统可以使用现金(Cash)、移动支付、银行卡(Card)(信用卡(CreditCard)和储蓄卡(DebitCard))等多种支付方式(PaymentMethod)对物品(Item)账单(Bill)进行支付。图6-1是某支付系统的简略类图。
【C++代码】
#include
#include
#include
USing namespace std;
class PaymentMethod{
public:
virtual void pay(int cents)=0;
};
//Cash、DebitCard和Item实现略,Item中getPrice()获取当前物品对象的价格
clasS Card :public PaymentMethod {
private:
String name,num;
public:
Card(string name,string num){this->name=name;this->num=num;)
string toString(){
return this->getType()+"card[name="+name+",num="+num+"]";
}
void pay(int cents){
cout<<“Payed”<
this->executeTransaction(cents);
}
protected:
virtual string getType()=0;
virtual void (1)________=0:
};
class CreditCard (2)________ publiC:
CreditCard(string name,string num) (3)________{
}
protected:
string getType(){ return“CREDIT”; }
void executeTransaction(int cents){
cout<
}
};
class Bill {//包含所有购买商品的账单
private:
vector
*>items;//包含物品的vector
public:
void add(Item
*
item){ items.push back(item); }
int getTotalPrice(){/
*
计算所有item的总价格,代码略
*
/}
void pay(PaymentMethod
*
paymentMethod){//用指定的支付方式完成支付
(4)________ (getTotalPrice());
}
};
class PaymentSystem{
public:
void pay()(
Bill
*
bill=new Bill();
Item
*
iteml=new Item(“1234”,10);
Item
*
item2=new Item(“5678”,40);
bill->add(iteml); bill->add(item2); //将物品添加到账单中
(5)________(new CreditCard(“LI SI”,“98765432101”));//信用卡支付
}
};
int main(){
(6)________=new PaymentSystem()j
payment->pay();
return 0;
}
选项
答案
(1)executeTransaction(int cents) (2):public Card (3):Card(name,num) (4)paymentMethod->pay (5)bill->pay (6)PaymentSystem
*
payment
解析
本题考查C++语言程序设计的能力,涉及类、对象、函数的定义和相关操作。要求考生根据给出的案例和代码说明,阅读并完成程序填空。
本题目中涉及采用某种支付方式进行账单支付。账单中包含各种物品,账单关联支付方式。根据说明进行设计,题目给出了类图(如图6-1类图所示)。
图中支付方式顶层PaymentMethod设计为接口,C++中设计为抽象基类,PaymentMethod包含表示进行支付的纯虚函数pay(),纯虚函数没有实现,原型中=0表示纯虚函数,即:
virtual void pay(int cents)=0;
具体实现由实现PaymentMethod的子类来完成。Cash和Card是实现PaymentMethod的两个实现类,表示现金支付和卡支付。其中,卡支付定义为抽象类,包含带参数的构造方法public Card(string name,string num),获取卡类型getType和执行交易executeTransaction两个纯虚函数,并且定义为protected访问控制权限,即:
protected:
virtual string getType()=0;
virtual void executeTransactiOn(cents)=0;
卡支付的进一步具体实现为信用卡和现金卡两种支付方式,即CreditCard和DebitCard是继承Card的两个子类,继承用“:父类名”。C++中继承关系的子类构造器会首先调用父类构造器进行初始化,缺省情况下会调用父类中没有参数的构造器。而Card中只有带参数的构造器,所以子类需要在构造器中用“:父类构造器(…)”显式调用父类带有参数的构造器。C++中继承抽象类的类必须全部实现抽象类中的抽象方法,才能成为具体类进行实例化。CreditCard和DebitCard均为具体类,都要实现Card中定义的两个虚函数getType和executeTransaction,并加以实现。
Bill类包含所有购买商品的账单,用vector实现。方法add为账单中添加一件商品;方法getTotalPrice用于计算所有物品的总价格;方法pay为用指定的支付方式完成支付,其参数是支付方式PaymentMethod抽象基类指针,具体采用哪种支付方式则根据PaymentSystem中进行支付时提供的具体支付方式进行支付,即实现PaymentMethod的具体类的pay函数。其真正执行的方法根据所传具体支付类型的对象而定。
PaymentSystem中的pay函数中,创建Bill对象指针,即:
Bill
*
bill=new Bill();
然后向其中添加一些物品,之后调用bill中的pay方法对账单进行支付,其参数为提供的具体支付方式,即:
Bill->pay(new CreditCard(“LI SI”,“98765432101”));
Bill中pay函数的参数为PaymentMethod纯虚类对象指针,此处调用时传递的具体支付方式参数会自动向上转型为PaymentMethod类型,向上转型总是安全的。在Bill中进行pay的是对象指针所动态绑定的实际具体支付方式对象执行相应的pay函数。
主控逻辑代码在main函数中实现。在main()数中,先初始化PaymentSystem类的对象指针,名称payment,然后调用pay函数,即:
PaymentSystem
*
payment=new PaymentSystem();
Payment->pay();
综上所述,空(1)需要定义纯虚方法virtual executeTransaction(int cents)=0;题目代码中已经给出=0;所以空(1)为executeTransaction(int cents);空(2)需要继承抽象类Card,即:public Card;空(3)需要显式调用父类的构造器,即:Card(name,num),空(4)需要调用支付方式的pay函数进行支付,即paymentMethod->pay;空(5)处需要bill对象调用pay函数进行支付,即bill->pay,空(6)处为创建PaymentSystem类的对象指针,即PaymentSystem
*
payment。
转载请注明原文地址:https://jikaoti.com/ti/D8W7FFFM
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
对新买的计算机需要记录保存的硬件主要参数中,不包括_______。
以下关于操作系统中回收站的叙述,不正确的是____________。
收集数据时,设计调查的问题很重要。此时,需要注意的原则不包括(8)。
在WindowsXP中,删除某个应用程序在桌面上的快捷方式,则(42)。
某公司下设4个分公司A、B、C、D,上月各分公司的销售额及其在总公司所占比例如下表所示。由于此表单受潮,有些数据看不清了,但还可以推算出来。根据推算, D公司上月的销售额为(68)万元。
在Windows7系统运行时,用户为了获得联机帮助,可以直接按功能键(24)________________。
甲和乙用如下图的两个转盘做游戏,游戏规则如下:分别旋转两个转盘,当两个转盘所转到的数字之积为奇数时,甲得2分;当所转到的数字之积为偶数时,乙得1分,则这游戏规则______。
内存用于存放计算机运行时的指令、程序、需处理的数据和运行结果。但是,存储在(2)中的内容是不能用指令修改的。
一批数据的__________代表这批数据的一般水平,掩盖了其中各部分数据的差异。
阅读以下说明,回答问题1至问题4。说明某公司A楼高40层,每层高3.3米,同一楼层内任意两个房间最远传输距离不超过90米,A楼和B楼之间距离为500米,需在整个大楼进行综合布线,结构如图1-1所示。为满足公司业务发展的需要,要求为楼内客户机提供数
随机试题
A、湿啰音B、胸膜摩擦音C、移动性浊音D、肠鸣音E、胃振水音气管或支气管内有稀薄的分泌物,随呼吸气体通过时,形成的水泡即刻破裂所产生的声音是()。
湿热型带下病的主证中,下列哪项是错误的
试验检测机构申请可选的参数数量,应该以质监机构最后的确认数量为准。()
在换路瞬间,下列各项中除()不能跃变外,其他全可跃变。
根据《建设工程工程量清单计价规范》的规定,按设计图示尺寸以油漆部分展开面积计算工程量的是()。
商用房贷款申请人必须先付清不低于所购或所租的商用房全部价款()以上的首期付款。
下列关于多国化战略的表述,错误的是()。
关于证券投资组合理论的以下表述中,正确的是()。
税收政策主要用于实现稳定和发展经济,调节收入分配等目标。()
Wehaveheardalotaboutthehealthbenefitsoftea,especiallygreentea.Itishighinpolyphenols,compoundswithstrongan
最新回复
(
0
)