软件构造实验课一总结

1.实验目标概述

本次实验通过求解三个问题,训练基本 Java 编程技能,能够利用 Java OO 开发基本的功能模块,能够阅读理解已有代码框架并根据功能需求补全代码,能够为所开发的代码编写基本的测试程序并完成测试,初步保证所开发代码的正确性。另一方面,利用 Git 作为代码配置管理的工具,学会 Git 的基本使用方法。

基本的 Java OO 编程

基于 IDE 进行 Java 编程

基于 JUnit 的测试

⚫ 基于 Git 的代码配置管理

2.实验环境配置

实验开发使用的是IDEA 2021版本。在安装IDEA时选择社区版安装会更简便,但考虑到之后可能还会用到IDEA的高级操作所以在网上找了破解教程安装了2021高级版。但一开始敲hello world 时也遇到了问题。首先就是因为刚刚下载IDEA,设置没调好。几条方法打出来都是红色,原因是没有导入包。因为我没将IDEA设置为自动导入包。

之前电脑上已经安装过JDK21和JDK17,但是根据实验要求又安装了JDK11。在环境变量配置时出现了问题,因为不会如何在多个JDK版本间进行切换。在上CSDN搜索后学会了切换方法。如下图,只需要在环境变量中进行配置和切换即可。

在配置JUnit时也出现了大量问题。首先,因为我使用的是IDEA,所以从Settings->Plugins中可以直接下载JUnit5插件,但对于assertEquals仍然无法识别。所以后来就选择直接新建一个目录,然后将github上提供的JUnit相关的两个文件导入到目录中。如下图。

然而问题并没有解决,方法仍然报错。查询知这是因为项目没有引入JUnit。

点击ProjectStructure->module将JUnit4的路径导入并添加。输入@Test同时alt+enter选择add JUnit4 to classpath。但之后@Testh还是报错,找了半天没找到问题,后来发现是我傻了,因为没有编写测试方法。

配置git的过程没有什么问题(环境变量相关问题查询CSDN后解决了),但一开始的使用上坎坷不断。一开始我以为应该在windows终端输入git命令就好,结果发现一大堆git命令无效,后来才知道应该在git-bash上输入命令。

 3.实验过程

3.1Magic Squares

这个问题中的主要内容就是判断文件输入的是否为一个幻方并能处理非法输入,以及理解一个幻方生成函数。程序算法并不难,主要目的应该是让我们去熟悉java语法。可能最需要学习的点就是如何从文件中读取内容以及如何将内容输入至文件中。而且这个幻方的判断条件中并没有要求一组中的数字各不相同,这就简单很多。

3.2Turtle Graphics

问题的主要内容就是编写一系列的函数。其中感觉比较难的就是计算转向角和凸包问题。后者的算法主要是从网络上学习的,没用用到过多java的高级语法和方法。画图软件很有意思。

值得注意的是CalculateBearingToPoint方法的实现。

先计算两点间距离和和两点x坐标的差值,二者比值为角度的正弦值,调用asin方法将比值转换为弧度值,再用toDegrees转换为角度值。之后分四种情况讨论,即下一个点在左上左下右上右下四种。四种分别变换计算(主要是180和360的问题)后再减去初始角度值即可。当然如果最后得到的数值小于0,就加上360。

4.实验过程中遇到的困难

遇到的困难

解决途径

调用读取文件的readline函数时报错。

File->invalidate caches->restart,错误就神奇的消失了

第一次使用git时,在没有拉取的前提下就修改了代码,导致下一次提交时无法上传

在本地分支落后于远程分支的情况下,可以使用git push -u origin master -f 强制上传(网上说会有严重后果,但我也只能这么做了,反正目前来看没啥问题)。以后修改代码之前都git pull

生成幻方的函数原理不明

上网查询后清楚了

刚开始做turtle的问题时一导入文件就爆红。

后来发现是包的路径有问题,应该在所有前面加上P2.

计算凸包的函数完全不会

上网查明白算法原理

编写Person类时不知道如何处理遇到同名的问题

上网查询后在Person类里增加一个静态Hashmap

JUnit语句爆红

发现是没有导入Junit,选择project structure->modules->导入JUnit4

5.实验经验教训 

  1. 每次修改代码前一定要git pull
  2. 成员变量最好私有化
  3. IDEA中的代码一定要有一个合理的目录
  4. 每次git commit时一定要简明扼要地写上这次修改的内容
  5. 要学会熟练使用set,list,map等类型
  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值