• 欢迎光临~

# 软件构造 Lab 1

2022年春季学期 计算学部《软件构造》课程

Lab 1实验报告

1 实验目标概述......................................................................................................................................... 1

2 实验环境配置......................................................................................................................................... 1

3 实验过程.................................................................................................................................................. 2

3.1 Magic Squares.................................................................................................................................. 2

3.1.1 isLegalMagicSquare().................................................................................................. 2

3.1.2 generateMagicSquare()............................................................................................... 2

3.2 Turtle Graphics................................................................................................................................. 2

3.2.1 Problem 1: Clone and import................................................................................................ 3

3.2.2 Problem 3: Turtle graphics and drawSquare.................................................................. 3

3.2.3 Problem 5: Drawing polygons.............................................................................................. 3

3.2.4 Problem 6: Calculating Bearings.......................................................................................... 3

3.2.5 Problem 7: Convex Hulls....................................................................................................... 3

3.2.6 Problem 8: Personal art.......................................................................................................... 4

3.2.7 Submitting................................................................................................................................. 4

3.3 Social Network................................................................................................................................. 5

3.3.1 设计/实现FriendshipGraph类.................................................................................... 5

3.3.2 设计/实现Person类........................................................................................................... 6

3.3.3 设计/实现客户端代码main().......................................................................................... 6

3.3.4 设计/实现测试用例.............................................................................................................. 6

4 实验进度记录......................................................................................................................................... 7

5 实验过程中遇到的困难与解决途径................................................................................................ 7

6 实验过程中收获的经验、教训、感想........................................................................................... 7

6.1 实验过程中收获的经验和教训（必答）............................................................................... 7

6.2 针对以下方面的感受（必答）................................................................................................. 8

# 1 实验目标概述

l 基本的 Java OO 编程

l 基于 Eclipse IDE 进行 Java 编程

l 基于 JUnit 的测试

l 基于 Git 的代码配置管理

# 2 实验环境配置

​ 由于之前安装过JDK-8，并且距本次实验时间较长，忘记了其安装路径，开始的时候不知道该先卸载JDK-8或者该怎么覆盖安装。通过查询资料得知，IDEA/Eclipse在开始一个工程的时候可以选择不同的JDK，所以只需要在环境变量增加对应的JDK即可，具体JDK的使用可以在创建工程或之后调整。

​ 指导中关于Java的教学都是英文，对于初学者不是很友好，可以自己借阅其他Java的指导书学习。

​ Git本地在与GitHub关联的时候，由于对命令掌握的不够，导致无法clone

​ 首先需要在终端执行ssh-keygen命令按几次回车生成公私钥，将.ssh/id_rsa.pub 文件中的公钥内容复制出来，在GitHub网页上添加公钥。然后够我们就可以克隆Github上的仓库到本地了。

https://github.com/ComputerScienceHIT/HIT-Lab1-120L052314

# 3 实验过程

## 3.1 Magic Squares

Magic Squares是一个正整数组成的正方形，其每行、每列以及对角线的数字之和都相等。本次实验需要实现两个任务。

## 3.2 Turtle Graphics

### 3.2.1 Problem 1: Clone and import

1. git init初始化本地仓库

3. 在远程仓库创建master分支

4. git pull origin master将远程仓库同步到本地

5. git add . 、git commit -m “” 、git push将本地文件加入到本地仓库，将本地仓库同步到远程仓库。

### 3.2.7 Submitting

1. 在HIT-Lab1-120L052314文件夹目录下打开git-bash

3. git commit -m “P2” 提交到本地仓库并备注P2

4. git push 同步到远程仓库

## 3.3 Social Network

### 3.3.1 设计/实现FriendshipGraph类

FriendshipGraph类中首先要有一个列表用来存储Person节点，可以使用ArrayList类来实现，将变量名命名为Vertex。

# 4 实验进度记录

2022-04-29 18:30-19:30 初步尝试编写isLegalMagicSquare函数 延期1小时完成
2022-04-29 19:45-21:30 继续编写isLegalMagicSquare函数并对其进行测试 按计划完成
2022-04-29 22:00-23:00 编写generateMagicSquare函数并完成测试 按计划完成
2022-04-30 19:00-20:00 完成P2中的Problem0-5 延期半小时完成
2022-04-30 20:45-23:45 完成P2中剩下的problem并完成测试 延期一个小时完成
2022-05-01 22:45-0:00 编写FriendshipGraph类 遇到困难，没有完成
2022-05-05 20:00-21:00 编写Person类和FriendshipGraph类 按计划完成
2022-05-06 16:00-17:00 优化上边两个类并编写test测试用例 按计划完成

# 5 实验过程中遇到的困难与解决途径

Git相关操作 在蓝桥云网站中，进行了学习和应用演练

# 6 实验过程中收获的经验、教训、感想

## 6.2 针对以下方面的感受（必答）

(1) Java编程语言是否对你的口味？与你熟悉的其他编程语言相比，Java有何优势和不足？

(2) 关于Eclipse或IntelliJ IDEA，它们作为IDE的优势和不足；

(3) 关于Git和GitHub，是否感受到了它在版本控制方面的价值；

(4) 关于CMU和MIT的作业，你有何感受；