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