2017年下半年程序员考试下午真题(5)
试题五〈共 15分〉
阅读以下说明和Java 代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
以下Java代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物件 (ltem) 加入购物车 (ShoppinggCart) ,到收银台(Cashier)对每个购物车中的物统计其价格进行结账。设计如图 5-1 所示类图。
【Java代码】
interface Item{
public void accpt(Visitor visitor);
public double getPrice();
classBook
private double price;
classBook(double price)
public void accpt(Visitor visitor)
public double getPrice()
retwn price;
//其它物品类略
interface Visitor
public void visit(Book book);
//其他物品的visit方法
class Cashier
public double totalForCart;
//访问Boo类型对象的价格并累加
//假设Book类型的物品价格超过10元打8折
If(book.getPrice()<10.0)
totalForCart+=book.getPrice()
else
totalForCart+=book.getPrice()*0.8;
//其他visit方法和折扣策略类似。此处略
public double getTotal()
return totalForCart
Class ShoppingCart
//normal shopping cart stuff
private java.util.ArrayListitems=new java.util.ArrayList<>();
public double calculatePrice()
Cashier visitor=new Cashier()
For(Item item:items)
double total=visitor.getTatal()
return total
public void add(Item e)
this,items.add(e)
各省软考办 | ||||||||||