软考真题
第22题
【说明】
现如今线下支付系统可以使用现金(Cash)、移动支付、银行卡(Card)(信用卡(CreditCard)和储蓄卡(DebitCard))等多种支付方式(PaymentMethod)对物品(Item)账单(Bill)进行支付。图5-1是某支付系统的简略类图。



【Java代码】


Import java.util.ArrayList;
import java.util.List;

interface PaymentMethod {
	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 = num;
	}


	@Oveiride
	public String toString()
	{
		return(String.format( “ % s card[name = % s, num = % s] ” this.getType(), name, num ) );
	}


	@Override
	public void pay( int cents )
	{
		System.out.println (“ Payed " + cents + “ cents using “ + toString());
this.executeTransaction(cents);
}
protected abstract String getType();
protected abstract void executeTransaction(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.println(cents + " paid using Credit Card."’);
}
}

class Bill {//包含所有购买商品的账单
private List items = new ArrayList<>();
public void add(Item item) { items.add(item); }
public intgetTotalPrice(){/*计算所有 item 的总价格,代码略*/ }
public void pay(PaymentMethod paymentMethod){//用指定的支付方式完成支付
(5) (getTotalPrice());
}
}
public class PaymentSystem {
public void pay() {
Bill bill = new Bill();
Item item1 = new Item(" 1234 ",10); Item item2 = new Item( " 5678 ",40);
bill.add(item1); bill.add(item2); //将物品添加到账单中
bill.pay(new CreditCard("LI SI ", " 98765432101 ")); //信用卡支付
}

public static void main(String[ ] args) {
(6) = new PaymentSystem();
payment.pay();
}
}



【问题:5.1】阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
第11章Java程序设计
正确答案:
你的答案:
请先在App中激活(应用市场搜“软考真题”)
知识点:
试卷:
2019年 上半年 下午试卷 案例

笔记

请先在App中激活(应用市场搜“软考真题”)

2019-10-23


请先在App中激活(应用市场搜“软考真题”)

2019-11-09


答题卡
加油