当前位置: 首页icon 51CTO软考 > 软考资讯 >考试科目 >2022年5月 软件设计师 下午(模考大赛机考专属历年试题)之十五

2022年5月 软件设计师 下午(模考大赛机考专属历年试题)之十五

作者:wx6225b14cdec172023-10-16 01:00:11
备考咨询 刷题指导
添加专属学姐
下载资料 2024上半年软考备考资料+考试大纲
下载按钮 下载
引号

摘要:对于【软件设计师】软考考试而言,真题无疑是最重要的学习资料之一。在软考备考过程中,吃透真题、掌握真题所考知识点、熟悉真题的出题思路,对我们提升分数的效果是最明显的,通过对真题的反复练习,还可以查漏补缺。今天,给大家带来【2022年5月 软件设计师 下午(模考大赛机考专属历年试题)】部分真题的详解,一起来看看吧~1、试题六(15分)阅读下列说明和Java代码,将应填入(n

引号
摘要:对于【软件设计师】软考考试而言,试题无疑是最重要的学习资料之一。在软考备考过程中,吃透试题、掌握试题所考知识点、熟悉试题的出题思路,对我们提升分数的效果是最明显的,通过对试题的反复练习,还可以查漏补缺。今天,给大家带来【2022年5月 软件设计师 下午(模考大赛机考专属历年试题)】部分试题的详解,一起来看看吧~



1、试题六(15分)阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。【说明】在软件系统中,通常都会给用户提供取消、不确定或者错误操作的选择,允许将系统恢复到原先的状态。现使用备忘录(Memento)模式实现该要求,得到如图6-1所示的类图。Memento 包含了要被恢复的状态。Originator创建并在 Memento 中存储状态。Caretaker 负责从 Memento 中恢复状态。【Java 代码】import java.util.*;class Memento {private String state;public Memento(String state){this.state=state;}public String getState(){return state;}}class Originator{private String state;public void setState(String state){this.state=state;}public String getState(){retum state;}public Memento saveStateToMemento( ){return(1) ;}}public void getStateFromMemento(Memento Memento){state = (2) ;}class CareTaker{private ListmementoList= new ArrayList();public (3) {mementoList.add(state);}public (4) {return memensoList.get(index);}}class MementoPaneDems{public static void main(String[] args) {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");System.out.println("CurrentState"+originator.getState());originator.getStateFromMemento(careTaker.get(0));System.out.println("Frist saved State"+originator.getState());originator.getStateFromMemento(careTaker.get(1));System.out.println("Second saved State"+originator.getState());}}
答案:

(1)new Memento(state)

(2)Memento.getState()

(3)void add(Memento state)

(4)Memento get(int index)

(5)originator.saveStateToMemento()

(6)originator.saveStateToMemento()


答题解析:

备忘录模式是指在不破坏封装的前提下,捕获一个对象的内部状态,并在对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态,属于行为型模式。 这个模式有三个关键角色:发起人角色(Originator)、备忘录角色(Memento)、备忘录管理员角色(Caretaker)。三者的基本关系是:发起人创建一个包含其状态的备忘录,并传给备忘录管理员。备忘录管理员不知道如何与备忘录交互,但会把备忘录放在一个安全之处保管好。

发起人角色(Originator):负责创建一个备忘录,记录自身需要保存的状态,具备状态回滚功能。

备忘录角色(Memento):用于存储Originator的内部状态,可以防止Originator以外的对象访问。

备忘录管理员角色(Caretaker):负责存储。提供管理员备忘录,无法对备忘录内容进行操作和访问。

在类Originator中创建记录自身保存状态的备忘录,在方法saveStateToMemento()中返回Memento,类型的备忘录,所以(1)处为new Memento(state);在getStateFromMemento(Memento Memento)方法中获取备忘录Memento的状态,所以调用Memento的getState(),所以(2)为Memento. getState();

在备忘录管理员Caretaker中,需在(3)和(4)中补充方法名,结合类MementoPaneDems中对象careTaker调用的方法careTaker.add( (5) )以及(3)处的方法体,需要在列表mementoList中添加Memento类对象,所以(3)是 void add( Memento state);结合类MementoPaneDems中对象careTaker调用的方法careTaker.get(0)以及getStateFromMemento(Memento Memento),所以(4)是Memento get(int index);

(5)和(6)都是需要在careTaker存储发起人创建的备忘录,因此都是originator.saveStateToMemento()。



查看完整试题>>>


代理合作学习群