本试卷共6道题。试题一至试题四是必答题,试题五和试题六选答一题。每题15分,满分75分。
试题一
阅读下列说明和图,回答问题1至问题4。
【说明】
某公司欲开发一款外卖订餐系统,集多家外卖平台和商户为一体,为用户提供在线浏览餐品、订餐和配送等服务。该系统的主要功能是:
1.入驻管理。用户注册、商户申请入驻,设置按时间段接单数量阈值等。系统存储商户/用户信息。
2.餐品管理。商户对餐品的基本信息和优惠信息进行发布、修改、删除。系统存储相关信息。
3.订餐。用户浏览商户餐单,选择餐品及数量后提交订餐请求。系统存储订餐订单。
4.订单处理。收到订餐请求后,向外卖平台请求配送。外卖平台接到请求后发布配送单,由平台骑手接单,外卖平台根据是否有骑手接单返回接单状态。若外卖平台接单成功,系统给支付系统发送支付请求,接收支付状态。支付成功,更新订单状态为已接单,向商户发送订餐请求并由商户打印订单,给用户发送订单状态;若支付失败,更新订单状态为下单失败,向外卖平台请求取消配送,向用户发送下单失败。若系统接到外卖平台返回接单失败或超时未返回接单状态,则更新订单状态为下单失败,向用户发送下单失败。
&n ……此处隐藏22137个字…… 第三空和第四空中补充方法名,结合类MementoPaneDems中对象careTaker调用的方法careTaker->add(______)以及第三空处的方法体,需要在列表mementoList中添加Memento类对象,所以第三空是virtual void add(Memento*state);结合类MementoPaneDems中对象careTaker调用的方法careTaker.get(0)以及getStateFromMemento(Memento Memento),所以第四空是Memento get(int index);
第五空和第六空都是需要在careTaker存储发起人创建的备忘录,因此都是originator->saveStateToMemento()。
试题六
15、(1)new Memento(state)
(2)Memento.getState()
(3)void add(Memento state)
(4)Memento get(int index)
(5)originator.saveStateToMemento()
(6)originator.saveStateToMemento()