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

题目

在软件系统中,通常都会给用户提供取消、不确定或者错误操作的选择,允许将系统恢复到原先的状态。现使用备忘录(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对象的实例化;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序终结者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值