考证宝(kaozhengbao.com)

第六题 阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明 】以下C++代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物品(Item)加入购物车(Shopping

考证宝 分享 时间: 加入收藏

考试:

问题:

第六题 阅读下列说明和C++代码,填补代码中的空缺,将解答填入答题纸的对应栏内。【说明 】以下C++代码实现一个超市简单销售系统中的部分功能,顾客选择图书等物品(Item)加入购物车(ShoppingCart),到收银台(Cashier)对每个购物车中的物品统计其价格进行结账,设计如图6-1所示类图。using namespace std;class Book;class Visitor {public: virtual void visit(Book* book)=0; //其它物品的visit方法};class Item {public:virtual void accept(Visitor* visitor)=0; virtual double getPrice()=0;};class Book (1){private: double price;public: Book (double price){ //访问本元素 (2); } void accept(Visitor* visitor) { (3); } double getPrice() { return price; }};class Cashier(4){private; double totalForCart;public: //访问Book类型对象的价格并累加 (5){ //假设Book类型的物品价格超过10元打8折 if(book->getPrice()<10.0) { totalForCart+=book->getPrice(); } else totalForCart+=book->getPrice()*0.8; } //其它visit方法和折扣策略类似,此处略 double getTotal() { return totalForCart; }};class ShoppingCart {private: vector<item*>items;public: double calculatePrice() { Cashier* visitor=new Cashier(); for(int i=0;i <items.size();i++) (6); } double total=visitor->getTotal(); return total; } void add(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)【解析】这里考察的是访问者模式。其定义如下:封装某些作用于某种数据结构中各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。

相关标签:

(初级)程序员     C++     代码     说明     答题     空缺    

热门排序

推荐文章

某网络工程使用如图1所示的PERT图进行进度安排;整个项目的最短工期为( ) 某机器字长为n,最高位是符号位,其定点整数的最大值为( )。 阅读下列说明,回答问题。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。int XOR(char * filen 参见下图,合理的“默认网关”IP地址是(34)。 下图为某工程进度网络图,结点1为起点,结点11为终点,那么关键路径为( ),此工程最快(请作答此空)天完成。 下表给出了某信息系统建设项目的所有活动截止到2018年6月1日的成本绩效数据,项目完工预算BAC为30000元。项目经理对项目偏差产生的原因进行了详细分析,预期未来还会发生类似偏差,请估算项目中的ET 某计算机系统页面大小为4K,进程P的页面变换表如下图所示。若进程P要访问逻辑地址25EFH(十六进制),那么经过地址变换后物理地址应为( )。 在Linux中,下列( )可以获得任何Linux命令的在线帮助。 阅读以下说明,回答问题1至问题2,将解答填入对应栏内。[说明]某公司商务网站建设项目的各工作代码及名称如下表所示。以各任务最早开始时间为起点,得到该项目计划的甘特图如下(每月按照30天计算)。24、项 在Windows命令行窗口中键入tracert命令,得到下图所示窗口,则该PC的IP地址可能为( )。
221381
领取福利

微信扫码领取福利

微信扫码分享