閱讀以下說(shuō)明和Java代碼,填補(bǔ)代碼中的空缺,將解答填入答題紙的對(duì)應(yīng)欄內(nèi)。
【說(shuō)明】
以下Java代碼實(shí)現(xiàn)一個(gè)超市簡(jiǎn)單銷(xiāo)售系統(tǒng)中的部分功能,顧客選擇圖書(shū)等物件(Item)加入購(gòu)物車(chē)(ShoppingCart),到收銀臺(tái)(Cashier)對(duì)每個(gè)購(gòu)物車(chē)中的物品統(tǒng)計(jì)其價(jià)格進(jìn)行結(jié)賬。設(shè)計(jì)如圖5-1所示類(lèi)圖。
圖5-1類(lèi)圖
問(wèn)題:5.1【Java代碼】
interfaceItem{
publicvoidaccept(Visitorvisitor);
publicdoublegetPrice();
}
classBook(1){
privatedoubleprice;
publicBook(doubleprice){(2);}
publicvoidaccept(Visitorvisitor){//訪問(wèn)本元素
(3);
}
publicdoublegetPrice(){
returnprice;
}
}
//其它物品類(lèi)略
interfaceVisitor{
publicvoidvisit(Bookbook);
//其它物品的visit方法
}
classCashier(4){
privatedoubletotalForCart;
//訪問(wèn)Book類(lèi)型對(duì)象的價(jià)格并累加
(5){
//假設(shè)Book類(lèi)型的物品價(jià)格超過(guò)10元打8折
if(book.getPrice()<10.0){
totalForCart+=book.getPrice();
}else
totalForCart+=book.getPrice()*0.8;
}
//其它visit方法和折扣策略類(lèi)似,此處略
publicdoublegetTotal(){
returntotalForCart;
}
}
classShoppingCart{
//normalshoppingcartstuff
privatejava.util.ArrayList<Item>items=newjava.util.ArrayList<>();
publicdoublecalculatePrice(){
Cashiervisitor=newCashier();
for(Itemitem:items){
(6);
}
doubletotal=visitor.getTotal();
returntotal;
}
publicvoidadd(Iteme){
this.items.add(e);
}
}