软件构造Lab1实验要点总结
本实验通过解决三个问题,训练了基本的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实验要点总结的更多相关文章
- 软件构造 Lab1
大二软件构造第一次实验 本人本次实验操作系统:macOS high Sierra 10.13.3 任务一:MagicSquare 对于本任务,主要需要实现两个方法,一个是isLegalMagicSqu ...
- 哈工大软件构造Lab1(2022)
目录 一.实验目标概述 二.实验环境配置 1.安装编写java程序的IDE--IntelliJ IDEA 2.安装Git 3.安装Junit 4.GitHub Lab1仓库的URL地址 三.实验过程 ...
- 软件构造Lab2实验总结
本次实验训练抽象数据类型(ADT)的设计.规约.测试,并使用面向对象编程(OOP)技术实现ADT.具体来说内容如下: 针对给定的应用问题,从问题描述中识别所需的ADT: 设计ADT规约(pre-con ...
- 哈工大软件构造Lab2(2022)
(防扒小助手) 本人CSDN博客: https://blog.csdn.net/m0_61753302https://blog.csdn.net/m0_61753302本人博客园博客(同步CSDN): ...
- 哈工大软件构造Lab3(2022)
(防扒小助手) 本人CSDN博客: https://blog.csdn.net/m0_61753302 本人博客园博客(同步CSDN): 何以牵尘 - 博客园 (cnblogs.com)https:/ ...
- 麻省理工18年春软件构造课程阅读02“Java基础”
本文内容来自MIT_6.031_sp18: Software Construction课程的Readings部分,采用CC BY-SA 4.0协议. 由于我们学校(哈工大)大二软件构造课程的大部分素材 ...
- HIT2019春软件构造->Git&Github学习笔记
由于软件构造课程需要,学习使用git,以下作为学习笔记. 一.Git初始化及仓库创建和操作 1.基本信息设置(设置签名) 命令 项目级别/仓库级别:仅在当前本地库范围内有效 git ...
- 面向对象软件构造 (Bertrand Meyer 著)
Part A: The Issues 议题 第一章 软件品质 第二章 面向对象的标准 Part B: The Road To Object Orientation 通向面向对象之路 第三章 模块性 第 ...
- 由软件构造引申的OOP与POP的心得体会
在大一初学C语言的时候,所解决的问题都是一些轻量级的简单问题,当时写过一个教学管理系统.这个教学管理系统的功能很简单,思想就是“流水线”:按部就班的实现所有流程.要完成整个教学管理系统,实际上就是完成 ...
随机推荐
- 【vue 开发】Vue中splice的使用
splice(index,len,[item])它也可以用来替换/删除/添加数组内某一个或者几个值(该方法会改变原始数组) index:数组开始下标 len: 替换/删除的长度 item:替换的值,删 ...
- VISIO下载+安装+第一个数据流图
一. 下载地址 Visio2021 (64bit).zip_免费高速下载|百度网盘-分享无限制 (baidu.com) 码3333 二. 安装步骤 Visio2021安装教程 (qq.com) 三. ...
- XShell免费版的安装配置教程以及使用教程(超级详细)
一. XShell的作用 XShell可以在Windows界面下来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的.它支持 RLOGIN.SFTP.SERIAL.TELNET.SSH2 ...
- python---冒泡排序的实现
冒泡排序 思想 列表中有n个数, 每两个相邻的数, 如果前边的数比后边的数大, 就交换. 关键点: 趟: 总共执行 n-1趟 无序区: 第 i 趟时, 索引 0~ n-1-i 为无序区 ...
- vue3项目后台管理系统模板
Vue3.0 发布第一个版本至今有一段时间了,到现在一直在更新优化,在性能方面,对比 Vue2.x ,性能的提升比较明显,打包后体积更小 来看下 Vue3.x 新增了哪些功能和特性. Performa ...
- Codeforces Round #705 (Div. 2) B. Planet Lapituletti(镜像时钟) 思维
传送门: https://codeforces.com/contest/1493/problem/B 题目: Example input 5 24 60 12:21 24 60 23:59 90 8 ...
- AcWing周赛44
周赛44 4317. 不同正整数的个数 link:https://www.acwing.com/problem/content/4320/ 我直接set #include <iostream&g ...
- 深度学习教程 | Seq2Seq序列模型和注意力机制
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/35 本文地址:http://www.showmeai.tech/article-det ...
- 通过实例程序验证与优化谈谈网上很多对于Java DCL的一些误解以及为何要理解Java内存模型
个人创作公约:本人声明创作的所有文章皆为自己原创,如果有参考任何文章的地方,会标注出来,如果有疏漏,欢迎大家批判.如果大家发现网上有抄袭本文章的,欢迎举报,并且积极向这个 github 仓库 提交 i ...
- docker基础_docker引擎内部原理
docker引擎内部原理 docker主要由以下主要组件构成:docker客户端.docker守护进程(daemon).containerd.runc.shim daemon daemon的主要功能包 ...