第五题 阅读以下说明和Java代码,填补代码中空缺,将解答填入答题纸对应栏内。
【说明】
以下Java代码实现一个超市简单销售系统中部分功能,顾客选择图书等物件 (Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中物品统计其价格进行结账。设计如图5-1所示类图。

问题:5.1 【Java代码】
interface Item{
public void accept(Visitor visitor);
public double getPrice();
}
class Book (1){
private double price;
public Book(double price){(2);}
public void accept(Visitor visitor){ //访问本元素
(3);
}
public double getPrice() {
return price;
}
}
//其它物品类略
interface Visitor {
public void visit(Book book);
//其它物品visit方法
}
class Cashier(4){
private double totalForCart;
//访问Book类型对象价格并累加
(5){
//假设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.ArrayList<Item>items=new java.util.ArrayList<>();
public double calculatePrice() {
Cashier visitor=new Cashier();
for(Item item:items) {
(6);
}
double total=visitor.getTotal();
return total;
}
public void add(Item e) {
this.items.add(e);
}
}
正确答案及解析
正确答案
解析
implements Item
(2)this.price=price
(3)visitor.visit(this)
(4)implements Visitor
(5)public void visit(Book book)
(6)item.accept(visitor)
【解析】
这里考察是访问者模式。其定义如下:封装某些作用于某种数据结构中各元素操作,它可以在不改变数据结构前提下定义作用于这些元素新操作。
第一、四空为接口与实现,接口使用Interface,实现使用implements。第二空this表示类实例本身。第三空为访问本元素。第五空实现接口里面方法。第六空调用accept方法。
你可能感兴趣的试题

- 
                
- A.V(S2)和P(S4)
 - B.P(S2)和V(S4)
 - C.P(S2)和P(S4)
 - D.V(S2)和V(S4)
 
 - 查看答案
 

- 
                
- A.V(S1)P(S2)和V(S3)
 - B.P(S1)V(S2)和V(S3)
 - C.V(S1)V(S2)和V(S3)
 - D.P(S1)P(S2)和V(S3)
 
 - 查看答案
 

- 
                
- A.P(S4)和V(S4)V(S5)
 - B.V(S5)和P(S4)P(S5)
 - C.V(S3)和V(S4)V(S5)
 - D.P(S3)和P(S4)V(P5)
 
 - 查看答案
 

- 
                
- A.P(S3)和V(S4)V(S5)
 - B.V(S3)和P(S4)P(S5)
 - C.P(S3)和P(S4)P(S5)
 - D.V(S3)和V(S4)V(S5)
 
 - 查看答案
 

- 
                
- A.P(S2)和P(S4)
 - B.P(S2)和V(S4)
 - C.V(S2)和P(S4)
 - D.V(S2)和V(S4)
 
 - 查看答案