前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2022软件设计师上半年下午题六

2022软件设计师上半年下午题六

作者头像
火之高兴
发布2024-07-25 15:27:35
410
发布2024-07-25 15:27:35
举报
文章被收录于专栏:大数据应用技术

题目

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

1.1. 对象的实例化

(1) public后出现的Memento是个返回类型,所以要去前段代码找Memento;

(2) 判断该空的函数名saveStateToMemento为保存状态到备忘录;

(3) Memento是返回类型,所以要返回Memento类型的对象;

(4) 在当前Originator类中没有Memento对象,所以要new一个对象;

(5) 根据前段代码找到的Memento类,在构造方法中,需要传参数;

(6) 在当前Originator类中有一个私有的 String state 变量可以使用。

1.2. get方法

(1) 该方法名为get,并且传入了Memento参数,是获取某参数;

(2) state是赋值语句,找前段Memento类的值怎么传入Memento;

(3)根据Memento类可知,通过getState()方法拿到state参数,所以调用Memento下的getState()方法;

1.3. 未确定的方法名

(1) 在问题(3)中,只有函数体,没有返回值类型、名称、参数及类型,需阅读函数体;

(2) 通过函数体得知,没有return,返回值类型是void,功能是向list集合中添加状态的方法;

(3) 函数体中出现参数state,并且在mementoList实例中调用,所以要找集合的数据类型;

(4) 根据前段代码可知,集合的数据类型为Memento,所以参数及数据类型为Memento state

(5) 去main函数中找,有没有CareTaker实例此功能被实现?有,取方法名add

1.4. get方法&&未确定的方法名

(1) 由问题(4)得知,需要判断返回类型、方法名、参数及类型;

(2) 函数体为集合中get获取下标元素,所以参数及类型为int index;

(3) 又因为集合,所以返回值类型同理为Memento

(4) 方法名同1.3确定方法类似,寻找main函数中的实例调用情况;

1.5. 根据返回值类型确定对象

(1) 由问题(5)可以确定1.3中的方法名;

(2) 由1.3中CareTaker类可知,该add方法需要传入一个参数,且为Memento类型;

(3) 在当前main方法中只有originator对象能返回Memento类型;

(4) 所以要根据Originator类中的方法,用originator调用saveStateToMemento()方法;

(5) saveStateToMemento()会传入一个Memento对象的实例化;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
    • 1.1. 对象的实例化
      • 1.2. get方法
        • 1.3. 未确定的方法名
          • 1.4. get方法&&未确定的方法名
            • 1.5. 根据返回值类型确定对象
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档