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对象的实例化;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/597969.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FJSP:霸王龙优化算法(Tyrannosaurus optimization,TROA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码

一、柔性作业车间调度问题 柔性作业车间调度问题(Flexible Job Shop Scheduling Problem,FJSP),是一种经典的组合优化问题。在FJSP问题中,有多个作业需要在多个机器上进行加工,每个作业由一系列工序组成&a…

穿越代码之海:探寻结构体深层逻辑,展望未来应用新天地

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看,已成习惯 创作不易,多多支持! 结构体作为一种数据结构,其定义和特点决定了它在各种应用中的广泛适用性。随着科技的进步和新兴行业的不断涌现&#xf…

SpringCloud Hystrix 服务熔断、服务降级防止服务雪崩

文章目录 SpringCloud Hystrix 熔断器、服务降级防止服务雪崩需求背景引入依赖启动类加Hystrix注解接口配置熔断常规配置超时断开错误率熔断请求数熔断限流 全局配置可配置项HystrixCommand.Setter参数Command Properties 服务降级 SpringCloud Hystrix 熔断器、服务降级防止服…

【Linux入门】Linux简史

Linux 是什么?Linux 是一款叫做操作系统的软件。 操作系统这款软件有什么样的意义呢?简单来说,比如有顾客买了一台笔记本电脑,这台笔记本电脑由电脑硬件组成,在这堆硬件上一定搭载了一款操作系统。正因为操作系统存在&…

nginx配置实例-反向代理

目录 一、目标-反向代理实现效果 二、安装tomcat 三、配置nginx服务 四、配置反向代理 一、目标-反向代理实现效果 访问过程分析: 二、安装tomcat 1、安装jdk环境 新建/export/server目录 解压jdk 查看是否解压成功 配置jdk软连接 进入jdk的bin目录中&#x…

[Apple Vision Pro]开源项目 Beautiful Things App Template

1. 技术框架概述: - Beautiful Things App Template是一个为visionOS设计的免费开源软件(FOSS),用于展示3D模型画廊。 2. 定位: - 该模板作为Beautiful Things网站的延伸,旨在为Apple Vision Pro用户…

在实体类中使用JSONObject对象

有时候我们的业务需求可能字段是json格式,这个时候我们的实体类就对应的也应该是json格式,需要使用到JSONObject这个对象,但是可能会使用不了这个对象,那接下来我将简单介绍如何使用这个对象。 以下为我的实体类中的某个字段&…

Linux进程状态深度解析:探索进程的生命周期

文章目录 一、引言1、进程的概念与重要性2、Linux系统下进程状态的意义3、进程状态与系统性能的关系 二、Linux下进程状态概述1、Linux进程状态的分类2、进程状态信息的获取方法 三、Linux下进程状态详解1、运行状态(Running)2、可中断睡眠状态&#xff…

乐健体育刷分----AI运动的站姿风车

一.前情提要 1.本文仅作学习参考不得用于其他不当途径,若有问题后果自负 二.操作 1.打开乐健体育 2.点击AI运动,找到站姿风车 3.摄像头对准以下图片,拖动图片或保持不动均可 (站姿风车2组及以上效果更佳)

14届蓝桥杯省赛 C/C++ B组 T8 整数删除(双向链表,堆)

瞬间定位一个数的左边或者右边,需要用到双向链表。 在过程中不断维护最小值,需要用到堆。 所以定义一个pair类型优先队列,每次取出堆顶进行删除,并且同时让删除元素的左右元素加上其值。 同时需要注意,在删除元素之后…

睿考网:税务师考试怎么报名?

税务师考试怎么报名?对于初次报考的考生来说,首先在“报名系统”中注册账户并进行身份验证。成功注册后遵循系统指引,逐一填写个人基本资料,上传近期所拍的1寸白色背景免冠证件照片,注意照片需要满足规定才可以,否则可…

区块链相关概念

区块链是什么,就算是做计算机技术开发的程序员,100个当中都没有几个能把这个概念理解明白,更不要说讲清楚了。那对于普通人来说,就更扯了。 除了“挖矿”表面意思似乎比较好理解外,其他的基础概念真TMD绕。 去中心化、…