2022年5月 软件设计师 下午(模考大赛机考专属历年试题)之十五
摘要:对于【软件设计师】软考考试而言,真题无疑是最重要的学习资料之一。在软考备考过程中,吃透真题、掌握真题所考知识点、熟悉真题的出题思路,对我们提升分数的效果是最明显的,通过对真题的反复练习,还可以查漏补缺。今天,给大家带来【2022年5月 软件设计师 下午(模考大赛机考专属历年试题)】部分真题的详解,一起来看看吧~1、试题六(15分)阅读下列说明和Java代码,将应填入(n
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()。
查看完整试题>>>
软考资料: 2024年软考论文范文> 软考考试核心重点难点汇总> 查看更多>
备考刷题:章节练习+每日一练> 软考历年试题+模拟题>查看更多>