哈工大2020春软件构造期末试题:参数合法性检测与诗歌类实现
需积分: 0 23 浏览量
更新于2024-08-05
收藏 596KB PDF 举报
"哈尔滨工业大学2020年春季学期软件构造期末考试试题"
这份试题主要涉及两个知识点:Java编程中的参数合法性验证以及面向对象程序设计中的抽象数据类型(ADT)。
1. Java参数合法性验证:
题目要求在方法`method`中使用assert语句对传入的参数`String credit`进行预条件(pre-condition)检查,确保其符合特定的格式,即"在[1,10]范围内的正整数,或正整数后面带有小数点0.5"。这涉及到Java中的正则表达式和字符串处理。合法的`credit`格式可以由以下正则表达式表示:`^[1-9]\d*(\.5)?$`,其中`^`表示字符串开始,`\d*`匹配任意数量的数字,`[1-9]`确保数字至少为1,`(\.5)?`允许出现一次小数点后跟0.5,`$`表示字符串结束。因此,对应的Java代码可以写为:
```java
public void method(String credit) {
assert credit.matches("[1-9]\\d*(\\.5)?") : "Invalid input format for credit!";
// 此处开始为method所完成的常规逻辑,无需填写
}
```
这段代码首先检查`credit`是否匹配上述正则表达式,如果不匹配,则assert语句抛出一个AssertionError,并附带错误信息"Invalid input format for credit!"。
2. 面向对象编程(OOP)与抽象数据类型(ADT):
题目中给出的`Poem`类是一个简单的ADT,代表了一首诗,包含了四个属性:标题(title)、作者(author)、诗行(lines)和发表日期(date)。这个ADT的设计体现了面向对象的思想,通过封装实现了数据隐藏,只暴露了对外接口。
- `Poem`类的构造函数用于初始化一个新诗实例,接受标题、作者、诗行列表和日期作为参数。
- `addOneLine`方法用于向诗中添加一行内容,体现了ADT的可变性。
- `plagiarize`方法创建了一个新的`Poem`对象,其作者更改为参数`newAuthor`,这展示了类的继承特性,即使没有明确的继承关系,但可以通过创建新对象并修改部分属性来模拟。
- `addPrefix`方法向所有诗行添加前缀,这是ADT操作的一个例子,改变了对象的状态而不改变其身份。
这个ADT的设计鼓励了代码的复用和模块化,每个方法都专注于其特定的任务,使得代码易于理解和维护。同时,通过封装保护了内部数据不被外部随意修改,确保了数据的安全性。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2021-10-28 上传
2021-12-16 上传
2022-08-08 上传
2021-06-08 上传
稚气筱筱
- 粉丝: 19
- 资源: 320
最新资源
- WordPress作为新闻管理面板的实现指南
- NPC_Generator:使用Ruby打造的游戏角色生成器
- MATLAB实现变邻域搜索算法源码解析
- 探索C++并行编程:使用INTEL TBB的项目实践
- 玫枫跟打器:网页版五笔打字工具,提升macOS打字效率
- 萨尔塔·阿萨尔·希塔斯:SATINDER项目解析
- 掌握变邻域搜索算法:MATLAB代码实践
- saaraansh: 简化法律文档,打破语言障碍的智能应用
- 探索牛角交友盲盒系统:PHP开源交友平台的新选择
- 探索Nullfactory-SSRSExtensions: 强化SQL Server报告服务
- Lotide:一套JavaScript实用工具库的深度解析
- 利用Aurelia 2脚手架搭建新项目的快速指南
- 变邻域搜索算法Matlab实现教程
- 实战指南:构建高效ES+Redis+MySQL架构解决方案
- GitHub Pages入门模板快速启动指南
- NeonClock遗产版:包名更迭与应用更新