本实验通过解决三个问题,训练了基本的Java编程技能,并给出了Eclipse+Jdk+Junit的配置方案,以及对使用git进行项目管理的方式。

  1.因此,本实验的第一个要点是配置环境。具体配置环境过程如下:

  Eclipse(IDE):直接从官网上安装,按默认配置进行即可。

  Jdk:官网下载,在eclipse中Windows->preferences->Java->Installed JREs,然后把下的jdk8的最新版本add,然后apply即可。(之前配的18,所以没遇到困难)

  Junit:eclipse配置时自带,对项目使用测试时右键项目->build path->点module->右边add library->找junit后apply即可。之后新建测试文件只要使用assert等方法即可。

  Git:遇到一些困难,主要在于安装哪个GUI能够更方便的管理仓库。后来决定下载GitHub Desktop,因为可以方便地直接关联GitHub,图形界面建仓库以及上传本地仓库。唯一的缺点可能是不能使用git的所有功能,但鉴于实验本身需要的git功能完全被GitHub Desktop包含,也用不到命令行,所以就用这个了。

(注意:在后续实验中依据不同的实验要求可能会使用git命令行来管理项目。因此,依照后续要求变化,可能会增加git的相关使用要点。)

  2.Magic Squares实验中,magic square的定义是:n阶幻方是n×n个数(通常是不同的整数)在一个方格中的排列,使得所有行、所有列和两条对角线中的n个数总和为同一常数。本实验包含判断是否是magic square以及生成magic square两个方法(函数),其中使用的数据结构以及调用的函数都不是很难,重点在于对输入内容的异常判断,这影响了你对输入的magic square的判断方法,如果读入时候全部循环一行行读就很难插入方法。

  这里我的处理方式是:对于是否是矩阵以及矩阵符合要求的判断由于行数不多,就没有单独拿出来处理。但是否是矩阵需要判断第一行当行数的标志物,所以我单独把对读入的第一行进行处理了。数字间分割以及是否是正整数这种就单独分出函数即可。

  3.Turtle Graphics实验中,大部分代码(包括相对关键的Turtle类以及实现GUI的类)都是给出的,只需要我们补全一个方法的代码。这当然大大降低了我们这个实验的难度。然而,这个实验也是有一定难度的。其难度主要是在凸包算法那里:凸包算法用java实现是一件不容易的事情。首先函数的参数是一组点的集合,使用的是set方法,把一组点集合起来。但set由于底层实现是HashMap(HashSet也是由HashMap实现的),所以点的顺序是不固定的,这就意味着我必须找一种类似于链表的方式重新存这些点,还要了解这种结构的各种方法。然后还要找最左下角的点,并对剩下点进行各种排序,最后用橡皮筋方法算点的时候还要确定范围,不能出界。循环的时候要注意对范围的变化要时刻标记,否则很容易出界。其他就没什么了,个人艺术设计也很有意思,难度不大又有创造性。

  4.Social Network中,主要要点在于遍历无向图时由于底层实现是有向图,我们的处理需要比较恰当,还有用bfs遍历无向图的时候计算距离应当单独开新变量,而不是计算循环次数,因为循环次数是所有点的和,而不是距离的叠加。具体来说,我在person类中新建一个private变量distance,专门用来计算bfs遍历的时候树上每个点距离树根的大小,这样找到点时即可输出正确结果。

  以上就是我总结的本实验的要点,希望对大家有所帮助。

软件构造Lab1实验要点总结的更多相关文章

  1. 软件构造 Lab1

    大二软件构造第一次实验 本人本次实验操作系统:macOS high Sierra 10.13.3 任务一:MagicSquare 对于本任务,主要需要实现两个方法,一个是isLegalMagicSqu ...

  2. 哈工大软件构造Lab1(2022)

    目录 一.实验目标概述 二.实验环境配置 1.安装编写java程序的IDE--IntelliJ IDEA 2.安装Git 3.安装Junit 4.GitHub Lab1仓库的URL地址 三.实验过程 ...

  3. 软件构造Lab2实验总结

    本次实验训练抽象数据类型(ADT)的设计.规约.测试,并使用面向对象编程(OOP)技术实现ADT.具体来说内容如下: 针对给定的应用问题,从问题描述中识别所需的ADT: 设计ADT规约(pre-con ...

  4. 哈工大软件构造Lab2(2022)

    (防扒小助手) 本人CSDN博客: https://blog.csdn.net/m0_61753302https://blog.csdn.net/m0_61753302本人博客园博客(同步CSDN): ...

  5. 哈工大软件构造Lab3(2022)

    (防扒小助手) 本人CSDN博客: https://blog.csdn.net/m0_61753302 本人博客园博客(同步CSDN): 何以牵尘 - 博客园 (cnblogs.com)https:/ ...

  6. 麻省理工18年春软件构造课程阅读02“Java基础”

    本文内容来自MIT_6.031_sp18: Software Construction课程的Readings部分,采用CC BY-SA 4.0协议. 由于我们学校(哈工大)大二软件构造课程的大部分素材 ...

  7. HIT2019春软件构造->Git&Github学习笔记

    由于软件构造课程需要,学习使用git,以下作为学习笔记. 一.Git初始化及仓库创建和操作  1.基本信息设置(设置签名)  命令        项目级别/仓库级别:仅在当前本地库范围内有效 git ...

  8. 面向对象软件构造 (Bertrand Meyer 著)

    Part A: The Issues 议题 第一章 软件品质 第二章 面向对象的标准 Part B: The Road To Object Orientation 通向面向对象之路 第三章 模块性 第 ...

  9. 由软件构造引申的OOP与POP的心得体会

    在大一初学C语言的时候,所解决的问题都是一些轻量级的简单问题,当时写过一个教学管理系统.这个教学管理系统的功能很简单,思想就是“流水线”:按部就班的实现所有流程.要完成整个教学管理系统,实际上就是完成 ...

随机推荐

  1. 人机交互大作业---C#WinForm酒店预订系统(纯界面)

    登录: 所有界面: 源代码:最近较忙,后续会上传至github 材料参考:扬中菲尔斯金陵大酒店

  2. es6语法之模版字符串

    //es6语法之`${}`以及vue语法 `${ }` (模版字符串)const name = '小缘' const age = 14 console.info(`大家好,我叫${name},今年${ ...

  3. 基于Debian搭建Hyperledger Fabric 2.4开发环境及运行简单案例

    相关实验源码已上传:https://github.com/wefantasy/FabricLearn 前言 在基于truffle框架实现以太坊公开拍卖智能合约中我们已经实现了以太坊智能合约的编写及部署 ...

  4. 【转】shim.ChaincodeStubInterface用法

    作为记录 shim.ChaincodeStubInterface用法

  5. Druid 1.1.24 在控制台打印"discard long time none received connection. , jdbcUrl : jdbc:mysql://...."错误日志

    Druid 1.1.24 在控制台打印"discard long time none received connection. , jdbcUrl : jdbc:mysql://...&qu ...

  6. B. Build the Permutation

    题目分析:我们先简单的分析一下这道题是在干什么啊,给我们三个整数n,a,b,问我们能否构造这样的排列使得序列中有a个极大值,b个极小值,能的话就给出任意一种可能的情况,不能的话就输出-1: 其实一开始 ...

  7. MySQL创建高性能索引

    参考<高性能MySQL>第3版 1 索引基础 1.1 索引作用 在MySQL中,查找数据时先在索引中找到对应的值,然后根据匹配的索引记录找到对应的数据行,假如要运行下面查询语句: 如果在u ...

  8. 都2022年了,HDFS为何还如此能战!

    摘要:HDFS也许不是最好的大数据存储技术,但依然是最重要的大数据存储技术. 本文分享自华为云社区<HDFS为何在大数据领域经久不衰?>,作者: JavaEdge. 1.概述 1.1 简介 ...

  9. Java学习day7

    Java继承不同与c++,格式为: public class 子类名 extends 父类名{ 语句体; } 继承提高了代码的复用性与维护性 在子类方法中访问一个变量时,首先在子类局部范围查找,其次到 ...

  10. 微信小程序循环列表点击每一个单独添加动画

    首先,咱们看一下微信小程序动画怎么实现,我首先想到的是anime.js,但是引入之后用不了,微信小程序内的css也无法做到循环的动态,我就去找官方文档看看有没有相应的方法,哎,还真有 点击这里查看 微 ...