第六题阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 以下C++代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物品(Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账,设计如图6-1所示类图。

欢迎免费使用小程序搜题/刷题/查看解析,提升学历,成考自考报名,论文代写、论文查重请加客服微信skr-web

第六题阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。 【说明】 以下C++代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物品(Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账,设计如图6-1所示类图。 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); } };

(1):public Item (2)this->price=price (3)visitor->visit(this) (4)public visitor (5)void visit(Book*book) (6)item->accept(visitor) 【解析】 这里考察的是访问者模式。其定义如下:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。

访客
邮箱
网址

通用的占位符缩略图

人工智能机器人,扫码免费帮你完成工作


  • 自动写文案
  • 自动写小说
  • 马上扫码让Ai帮你完成工作
通用的占位符缩略图

人工智能机器人,扫码免费帮你完成工作

  • 自动写论文
  • 自动写软件
  • 我不是人,但是我比人更聪明,我是强大的Ai
Top