大作业实验要求
更新记录
更新时间
更新内容
7.2
增加了关于TestUtil
的说明
7.2
修改了实验要求,根据目前提供的框架修正了一些之前的描述不完整的地方
7.2
将学术诚信的部分移至大作业评分标准
实验要求
将2-6次lab的内容进行整合,完成从读文件到执行指令序列的完整过程,并通过测试。
你可以在提供的框架上进行魔改,修改已有类的内部实现以及增加新的包新的类,但是因为平台技术原因请谨记以下巨坑。
不要修改已有类名!!!不要修改已有类名!!!不要修改已有类名!!!
不要改动已有的包结构!!!不要改动已有的包结构!!!不要改动已有的包结构!!!
不要删除已有类!!!不要删除已有类!!!不要删除已有类!!!
实验输入
通过调用测试接口runTest来执行不同的class文件,mainClassName是全限定名,使用了.
作为分隔符而不是/
,而cp则是用户classpath
。
此接口的行为类似于java -cp [cp] [mainClassName]
任何情况下都不要改动这个接口,包括不要在此方法声明中抛出checked Exception,请自己在实现中解决。
实验输出
打印输出结果,实验输出中都包含了hack TestUtil的内容,具体要求请查看关于TestUtil
我们提供的支持
class文件解析以及到JClass的转换,其余全部自行完成
之前作业中没有出现但是会涉及的内容
不会涉及内容
数组相关指令
字符串常量池
对类、对象的成员相关指令
库函数调用
加载数组类
本地方法调用
异常处理
其他注意事项
尽量保留你开发过程中的一些中间产出,例如你的草稿、你记录设计的笔记。
使用git来进行版本控制,每完成一部分就提交一下。
评分规则参见《评分规则》文档
关于TestUtil
TestUtil需要大家在invokestatic中hack如下三个方法,具体操作和lab6类似。
TestUtil.reach(int x)
把参数的值打印出来并换行,效果类似于下面这段代码。
TestUtil.equalInt(int a, int b)
如果参数a和b相等,则返回true,否则抛出异常,其中异常的信息为"[参数1]!=[参数2]"
效果类似于下面这段代码
TestUtil.equalFloat(float a, float b)
效果&规则与 equalInt
类似,只是参数类型为float
尽管我们希望避免无聊的规格化输出,但由于技术原因我们还是不得不作出一些约定。
请注意一次reach要且仅要打印一个换行符
equal的输出中,
!=
的两侧注意不要加空格
最后更新于
这有帮助吗?