首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和Java代码,将应填入(n)________处的字句写在对应栏内。 【说明】 现如今线下支付系统可以使用现金(Cash)、移动支付、银行卡(Card)(信用卡(CreditCard)和储蓄卡(DebitCard))等多种支付方式(Paymen
阅读以下说明和Java代码,将应填入(n)________处的字句写在对应栏内。 【说明】 现如今线下支付系统可以使用现金(Cash)、移动支付、银行卡(Card)(信用卡(CreditCard)和储蓄卡(DebitCard))等多种支付方式(Paymen
admin
2021-03-13
65
问题
阅读以下说明和Java代码,将应填入(n)________处的字句写在对应栏内。
【说明】
现如今线下支付系统可以使用现金(Cash)、移动支付、银行卡(Card)(信用卡(CreditCard)和储蓄卡(DebitCard))等多种支付方式(PaymentMethod)对物品(Item)账单(Bill)进行支付。图5-1是某支付系统的简略类图。
[Java代码】
import Java.util.ArrayList;
import jova.utii.List;
interface PaymenUMethod{
public (1)________
}
//Cash、DebitCard和Item实现略,Item中getPrice()获取当前物品对象的价格
abstract clasS Card (2)________ {
private final String name,num;
public Card(String name,String num){this.name=name;this.num=hum;)
@Orerride
public String toString() {
return String.format(“%s card[name=%s,num=%s]”,thiS.getType(),name, num);
}
@Orerride
public void pay(int cents){
System.out.println(“Payed”+cents+”cents using”+toString());
thiS.executeTranSaction(cents);
}
protected abstract String getType();
protected abstract void exeeuteTransaction(int cents);
}
class CreditCard(3)________{
public CreditCard(String name,String num){(4)________ }
@Override
protected String getType() {return“CREDIT”; )
@override
protected void executeTransaction(int cents) {
System.out.printin(centS+“paid USing Credit Card.”);
}
}
class Bill{//包含所有购买商品的账单
private List
items=new ArrayLiSt<>();
public void add(Item item) {items.add(item); }
public int getTotalPrice() {/
*
计算所有item的总价格,代码略
*
/ }
public void pay(PaymentMethod paymentMethod){//用指定的支付方式完成支付
(5)________ (getTotalprice());
}
}
public 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);//将物品添加到账单中
bill.pay(new CreditCard(“LISI”,“98765432101”));//信用卡支付
}
publiC static void main(String[] args){
(6)________=new paymentsystem();
payment,pay();
}
}
选项
答案
(1)void pay(int cents) (2)implements PaymentMethod (3)extends Card (4)super(name.num) (5)paymentMethod.pay (6)PaymentSystem payment
解析
本题考查Java语言程序设计的能力,涉及类、对象、接口、方法的定义和相关操作。要求考生根据给出的案例和代码说明,阅读并完成程序填空。
本题目中涉及采用某种支付方式进行账单支付。账单中包含各种物品,账单关联支付方式。根据说明进行设计,题目给出了类图(如图5.1类图所示)。
图中支付方式顶层PaymentMethod设计为接口,包含表示进行支付的接口方法pay()。Java中定义接口采用interface关键字,其中接口方法没有方法实现,并且缺省就是public的访问控制权限,直接用“;”结束,没有{}括起来的实现体,即:
public void pay(int cents);
方法的具体实现由实现PaymentMethod的类来完成。Cash和Card是实现PaymentMethod的两个实现类,表示现金支付和卡支付。其中,卡支付定义为抽象类,包含带参数的构造方法public Card(String name,String num),获取卡类型getType和执行交易executeTransaction两个抽象方法,用abstract关键字表示,并且定义为protected访问控制权限。卡支付进一步具体实现为信用卡和现金卡两种支付方式,即CreditCard和DebitCard是继承Card的两个子类,继承用关键字extends。Java中继承关系的子类构造器会首先调用父类构造器进行初始化,缺省情况下会调用父类中没有参数的构造器。而Card中只有带参数的构造器,所以子类需要在构造器中用super(…)显式调用父类带有参数的构造器。Java中继承抽象类的类必须全部实现抽象类中的抽象方法,才能成为具体类进行实例化,否则未被实现的方法仍然需要保留abstract关键字,并且相应类也仍然必须为抽象类且保留abstract关键字。CreditCard和DebitCard均为具体类,都要实现Card中定义的两个抽象方法getType方法和executeTransaction方法,并加以实现。
Bill类包含所有购买商品的账单,用ArrayList实现。方法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方法。
主控逻辑代码在PaymentSystem类中程序主入口main()方法中实现。在main()方法中,先初始化PaymentSystem类的对象,引用名称payment,然后调用pay方法,即:
PaymentSystem payment=new PaymentSystem();
payment.pay();
综上所述,空(1)需要定义接口方法voidpay(int cents),题目代码中已经给出用分号结尾,所以空(1)为void pay(int cents);空(2)需要实现接口PaymentMethod,即implements PaymentMethod;空(3)需要继承Card,即extends Card空(4)需要显式调用父类的构造器,即super(name,num);空(5)处调用支付方式的pay方法进行支付,即paymentMethod.pay;空(6)处为创建PaymentSystem类的对象payment,即PaymentSystem payment。
转载请注明原文地址:https://www.kaotiyun.com/show/C2jZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
设10个数{Xi|i=1,10)的平均值为a,则{10Xi+1|i=1,10)的平均值为(5)。
删除Windows中某个应用程序的快捷方式,意味着(39)。
操作系统的功能不包括______。
某企业的大数据工程项目包括如下四个阶段的工作:①数据获取,②数据清洗与整理,③数据分析,④数据展现。一般来说,工作量较大、花费时间较长的阶段是______(1),技术含量最高的阶段是______(2),准备向有关部门递交成果的阶段是______(3)。
Windows系统的快捷方式确切的含义是______。
在WindowsXP中,删除某个应用程序在桌面上的快捷方式,则(42)。
某公司下设4个分公司A、B、C、D,上月各分公司的销售额及其在总公司所占比例如下表所示。由于此表单受潮,有些数据看不清了,但还可以推算出来。根据推算, D公司上月的销售额为(68)万元。
在数据库中能够唯一地标识一个记录被称为______。
综合布线系统由6个子系统组成,将图1-1中(1)~(6)处空缺子系统的名称填写在答题纸对应的解答栏内。制作交叉双绞线(一端按EIA/TIA568A线序,另一端按EIA/TIA568B线序)时,其中一端的线序如图1-2(a)所示,另一端线序如图1—2
随机试题
低压供电系统中,采用单芯线作保护中性线干线(PEN线),铝导线截面不应小于()mm2。
在报告的写作中,信息的主要来源是
某学生期末各科成绩(单位:分)分别为85、90、93、79、82、84,该学生期末的平均成绩为()
习近平指出:“实现中国梦必须走中国道路、弘扬中国精神、凝聚中国力量。”其中中国道路就是()
气胸抽气减压应选取患侧腋中线4~5肋间或()
2019年12月11日晚8时15分许,某建筑高度达50m的大型商场,因发电机组电气线路短路形成高温电弧,引燃周围装饰材料并蔓延成火灾。在事故发生的第一时间,法人代表李某(该商场的消防安全责任人)立即启动应急预案,同时组织单位的义务消防队扑救火灾。与此同时,
从事积极资产负债管理的商业银行一般拥有良好的市场融资能力,可以在短期内从机构客户或市场上筹集大量资金,此类银行的大额负债依赖度_______、自身流动性风险管理的要求________。()
关于买卖合同解除的效力,下列说法正确的有()。
Didthemanhaveahadheadache?
Beggarscanbeseenonthestreets,subwayorat【C1】______spotsinalmostallthebigcities.Someareforrealandneedthemon
最新回复
(
0
)