案例
真题
(2022年上半年)
试题五(15分)
阅读下列说明和C++代码。将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
在软件系统中,通常都会给用户提供取消、不确定或者错误操作的选择,允许将系统恢复到原先的状态。现使用备忘录(Memento)模式实现该要求,得到如图5-1所示的类图。Memcnto 包含了要被恢复的状态。Originator创建并在Memento中存储状态。Caretaker负责从Memento中恢复状态。

【C++代码】
#include
#include
#include
using namespace std;
class Memento{
private:
string state;
public:
Memento(string state) this->state=state;} string getState()(return state;} } class Originator{ private: string state; public: void setState(string state)(this>sate-state;} string getState(){return state;} Memento saveStateToMemento(){return (1)}
void getStateFromMemento(Memento Memento){state=(2)}
class CareTaker{
private:
vector mementoList;
pubilc:
viod(3){mementoList.push back(state)
(4);return mementoList(index);}
int mian(){
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:"<<"+"<<endl;
originator->getStateFromMemento(careTaker->get(0);
cout<<"First saved State:"<<originator->getState()<<endl;
originator->getStateFromMemento(careTaker->get(1);
cout<<"second save State"<<"+"<<originator>getState()<<endl;return 0;}
阅读下列说明和C++代码。将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
在软件系统中,通常都会给用户提供取消、不确定或者错误操作的选择,允许将系统恢复到原先的状态。现使用备忘录(Memento)模式实现该要求,得到如图5-1所示的类图。Memcnto 包含了要被恢复的状态。Originator创建并在Memento中存储状态。Caretaker负责从Memento中恢复状态。

【C++代码】
#include
#include
#include
using namespace std;
class Memento{
private:
string state;
public:
Memento(string state) this->state=state;} string getState()(return state;} } class Originator{ private: string state; public: void setState(string state)(this>sate-state;} string getState(){return state;} Memento saveStateToMemento(){return (1)}
void getStateFromMemento(Memento Memento){state=(2)}
class CareTaker{
private:
vector mementoList;
pubilc:
viod(3){mementoList.push back(state)
(4);return mementoList(index);}
int mian(){
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:"<<"+"<<endl;
originator->getStateFromMemento(careTaker->get(0);
cout<<"First saved State:"<<originator->getState()<<endl;
originator->getStateFromMemento(careTaker->get(1);
cout<<"second save State"<<"+"<<originator>getState()<<endl;return 0;}