阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。
【说明】
以下C++代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物品(Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账,设计如图6-1所示类图。
图6-1类图
问题:6.1【C++代码】
usingnamespacestd;
classBook;
classVisitor{
public:
virtualvoidvisit(Book*book)=0;
//其它物品的visit方法
};
classItem{
public:virtualvoidaccept(Visitor*visitor)=0;
virtualdoublegetPrice()=0;
};
classBook(1){
private:doubleprice;
public:
Book(doubleprice){//访问本元素
(2);
}
voidaccept(Visitor*visitor){
(3);
}
doublegetPrice(){returnprice;}
};
classCashier(4){
private;
doubletotalForCart;
public:
//访问Book类型对象的价格并累加
(5){
//假设Book类型的物品价格超过10元打8折
if(book->getPrice()<10.0){
totalForCart+=book->getPrice();
}else
totalForCart+=book->getPrice()*0.8;
}
//其它visit方法和折扣策略类似,此处略
doublegetTotal(){
returntotalForCart;
}
};
classShoppingCart{
private:
vector<item*>items;
public:
doublecalculatePrice(){
Cashier*visitor=newCashier();
for(inti=0;i<items.size();i++)
(6);
}
doubletotal=visitor->getTotal();
returntotal;
}
voidadd(Item*e){
items.push_back(e);
}
};