GridWorld
2017春季实训
GridWorld阶段1自学报告
在实训的第一阶段,我们主要在云桌面配置了java的开发环境,了解了vi/vim编辑器的使用(虽然感觉学习指令有点难记),通过一系列的代码基本掌握了java的语法(有C++作为基础,感觉还是挺容易上手的),熟悉了linux下的命令行操作,还学会了使用ant和junit来对代码进行自动编译和单元测试,使编程的过程更为系统科学。其间,通过了helloworld和一个简单计算器的小程序,我加深对以上知识点的理解。还用了SonarQube对代码的规范性进行检测,对书写代码提供了指导。特别感谢TA们在群里以及实验室里的热心解答。
vi/vim编辑器的使用
vi的操作有点繁琐,这里按功能分类,记几个重要的。注意各个模式之间的切换。
进入vi的命令
- vi filename :打开或新建文件,并将光标置于第一行首
- vi +n filename :打开文件,并将光标置于第n行首
- vi + filename :打开文件,并将光标置于最后一行首
- vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
- vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
光标命令
- k、j、h、l——上、下、左、右光标移动命令。
- nG——跳转命令。n为行数,该命令立即使光标跳到指定行。
- Ctrl+G——光标所在位置的行数和列数报告。
- w、b——使光标向前或向后跳过一个单词。
编辑命令
- i、a、r——在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。
- cw、dw——改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。
- x、d$、dd——删除一个字符、删除光标所在处到行尾的所有字符以及删除整行的命令。
查找命令
/string、?string——从光标所在处向后或向前查找相应的字符串的命令
拷贝复制命令
yy、p——拷贝一行到剪贴板或取出剪贴板中内容的命令。
java的使用
乍一看,java的语法与C++有很大程度上的相似,都是面向对象的,并且摒弃了C++中令人畏惧的指针。java的垃圾回收可以自动的管理和清理内存。清理内存工作转交给编译器后,程序员的负担大大减小(很棒棒哦)。 下面列举几个需要注意的点。
数组
声明:int[] a;
在声明数组时,数组所需的空间并没有真正分配给数组。可以在声明的同时,用new来创建数组所需空间:
int[] a = new int[100];
这里创建了可以容纳100个整数的数组。相应的内存分配也完成了。 在声明的同时,给数组赋值。数组的大小也同时确定。
int[] a = new int[] {1, 3, 5, 7, 9};
interface
在interface中,我们
- 不需要定义方法的主体
- 不需要说明方法的可见性
- 用implements关键字来实施interface
注意第二点,interface中的方法默认为public。
static方法
如果一个方法声明为static,那么它只能调用static的数据和方法,而不能调用非static的数据和方法。
GUI
在制作简单计算器的时候,我用到了以下知识。
- Button和Textfield来实现按钮以及输入框,其中Textfield可通过
setEditable(false)
的方法来限制输入。 - 在构造函数中,使用super("...")来给窗口命名。
- 使用GridLayout(row, line)为界面布局。
- 在构造时,使用addActionListener(this)来为按钮等添加事件监听。
- 在actionPerformed中接收事件进行逻辑处理。
- 继承WindowAdapter编写代码来实现点击叉叉,可以退出程序的功能。
ant的使用
ant与makefile类似,都是编写各个文件之间的依赖关系。
在使用ant来编译计算器的时候,发现界面会一闪而过,仔细阅读教程后,发现是javac标签的fork属性应该设置为true。另外,生成的.jar文件不知道有什么用处。
记得要编写clean。
下面是我编写的calculator的ant编译文件。
Junit的使用
1.单元测试类必须继承自 TestCase。
2.要测试的方法必须以 test 开头。
3.@Before:使用了该元数据的方法在每个测试方法执行之前都要执行一次。
4.@After:使用了该元数据的方法在每个测试方法执行之后要执行一次。
5.@ignore:该元数据标记的测试方法在测试中会被忽略。
6.将源文件与测试文件放在同一目录下,在命令行中输入javac -classpath .:junit-4.9.jar HelloWorldTest.java
以及java -classpath .:junit-4.9.jar -ea org.junit.runner.JUnitCore HelloWorldTest
7.注意限时测试,处理测试异常,运行器,参数化测试,打包测试等。
小感想
短短的两天实训第一阶段,我就已经收获了很多,感觉自学能力真的很重要,要仔细看wiki上的教程,还要自学java的GUI,挺期待后面的阶段内容的。