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