/GridWorld

2017春季实训

Primary LanguageJava

GridWorld

2017春季实训

GridWorld阶段1自学报告


在实训的第一阶段,我们主要在云桌面配置了java的开发环境,了解了vi/vim编辑器的使用(虽然感觉学习指令有点难记),通过一系列的代码基本掌握了java的语法(有C++作为基础,感觉还是挺容易上手的),熟悉了linux下的命令行操作,还学会了使用ant和junit来对代码进行自动编译和单元测试,使编程的过程更为系统科学。其间,通过了helloworld和一个简单计算器的小程序,我加深对以上知识点的理解。还用了SonarQube对代码的规范性进行检测,对书写代码提供了指导。特别感谢TA们在群里以及实验室里的热心解答。

vi/vim编辑器的使用

vi的操作有点繁琐,这里按功能分类,记几个重要的。注意各个模式之间的切换。

进入vi的命令

  1. vi filename :打开或新建文件,并将光标置于第一行首
  2. vi +n filename :打开文件,并将光标置于第n行首
  3. vi + filename :打开文件,并将光标置于最后一行首
  4. vi +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
  5. vi -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename

光标命令

  1. k、j、h、l——上、下、左、右光标移动命令。
  2. nG——跳转命令。n为行数,该命令立即使光标跳到指定行。
  3. Ctrl+G——光标所在位置的行数和列数报告。
  4. w、b——使光标向前或向后跳过一个单词。

编辑命令

  1. i、a、r——在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。
  2. cw、dw——改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。
  3. 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中,我们

  1. 不需要定义方法的主体
  2. 不需要说明方法的可见性
  3. 用implements关键字来实施interface

注意第二点,interface中的方法默认为public。

static方法

如果一个方法声明为static,那么它只能调用static的数据和方法,而不能调用非static的数据和方法。

GUI

在制作简单计算器的时候,我用到了以下知识。

  1. Button和Textfield来实现按钮以及输入框,其中Textfield可通过setEditable(false)的方法来限制输入。
  2. 在构造函数中,使用super("...")来给窗口命名。
  3. 使用GridLayout(row, line)为界面布局。
  4. 在构造时,使用addActionListener(this)来为按钮等添加事件监听。
  5. 在actionPerformed中接收事件进行逻辑处理。
  6. 继承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,挺期待后面的阶段内容的。