信管网试题库
软件设计师 - 试题库 导航

2022年上半年软件设计师下午案例分析真题答案及解析(试题五)

2022年05月29日来源:信管网 作者:cnitpm

2022年上半年软件设计师下午案例分析真题已经发布!为方便广大考生估分及备考练习,信管网将不断为大家更新2022年上半年软件设计师下午真题答案及解析至完毕,以下是2022年上半年软件设计师下午案例分析真题答案及解析试题六。

【点击查看:2022年上半年软件设计师下午案例分析真题答案及解析完整版

【点击查看:历年软件设计师真题在线做题及PDF下载

2022年上半年软件设计师下午案例分析真题答案及解析(试题五)

试题五(共15分)

阅读下列说明和C++代码。将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

在软件系统中,通常不会给用户提供取消、不确定或者错误操作的选择,允许将系统恢复到原先的状态。现使用备忘录(Memento)模式实现该要求,得到如图5-1所示的类图。Memcnto 包含了要被恢复的状态。Originator创建并在Memento中存储状态。Caretaker负责从Memento中恢复状态。

【C++代码】

#include <iostream>

#include <string>

#include <vector>

using namespace std;

public:

void setState(string state)(this>sate-state;string get

StateO{fretumn state;}Memento saveStateToMemento0){

return (1)

void getStateFromMemento(MementoMemento){

state=(2)_

class CareTaker{

private:

vectormementoList;

pubilc:

void ( 3 ) {mementoList.push_back (state);}

(4)_;return mementoList(index);}

intmian( ){

Originator*originator=new Originator();

CareTaker*careTaker=new CareTaker();

originator->setState("State #1");

originator->setState("State #2");

careTaker->add( ( 5 ));

originator->setState("State #3");

careTaker->add(( 6 ));

originator->setState("State #4");

cout <<"Current State:"<<"+"<<originator->getState( )<<endl;

originator->getStateFromMemento(careTaker->get(0);

cout<<"First saved State:"<<originator->getStatee( )<<endl;

originator->getStateFromMemento(careTaker->get(1);

cout<<"second save State"<<"+" <<originator>getState( )<<endl;return 0;}

【参考答案】

(1) new Memento(state);

(2) Memento->getState();

(3) add(Memento * state)

(4) Memento * get(int index)

(5) originator->saveStateToMemento()

(6) originator->saveStateToMemento()

温馨提示:因考试政策、内容不断变化与调整,信管网提供的以上信息仅供参考,如有异议,请考生以权威部门公布的内容为准!

分享至:

信管网 - 信息系统项目管理专业网站

下载APP-在线学习

培训课程

0元畅享

考试题库

免费资料

客服咨询