题目详情

第五题 阅读以下说明和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)
查看答案

相关题库更多 +