閱讀下列說明和C++代碼,填補代碼中的空缺,將解答填入答題紙的對應(yīng)欄內(nèi)。
【說明】
以下C++代碼實現(xiàn)一個超市簡單銷售系統(tǒng)中的部分功能,顧客選擇圖書等物品(Item)加入購物車(ShoppingCart),到收銀臺(Cashier)對每個購物車中的物品統(tǒng)計其價格進行結(jié)賬,設(shè)計如圖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){
//假設(shè)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);
}
};