软件构造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语言的时候,所解决的问题都是一些轻量级的简单问题,当时写过一个教学管理系统.这个教学管理系统的功能很简单,思想就是“流水线”:按部就班的实现所有流程.要完成整个教学管理系统,实际上就是完成 ...
随机推荐
- java中异常(Exception)的定义,意义和用法。举例
1.异常(Exception)的定义,意义和用法 我们先给出一个例子,看看异常有什么用? 例:1.1- public class Test { public static void main(S ...
- SQLite实现数据库的储存2+SQLite数据库可视化工具SQLite Stadio
今日所学 SQLite实现数据库的储存 查看数据库的两种方法 Android 中 SQLite 数据库的查看 - woider - 博客园 SQLite Studio安装教程 [SQLite]可视化工 ...
- uniapp热更新和整包升级
一. uniapp热更新 (热更新官方文档) 很多人在开发uniapp的时候, 发现热更新失效问题(或者热更新没有更新manifest里的新增模块,SDK,原生插件包括云插件), 其实uniapp官 ...
- jboss学习4-jboss7开发配置指南
1 Jboss7下载与安装1.1 官方下载路径:http://www.jboss.org/jbossas/downloads,目前最新稳定版本为7.1.1 final,分别有zip和 ...
- maven项目中各文件都没有报错,但是项目名称有红叉
项目报错可以看到Problems(可以在Window--Show View--other--输入Problems找到) 一.可能原因 1.项目中各文件没有报错,但是项目名称中 ...
- Spring-Bean依赖注入(引用数据类型和集合数据类型)
为什么使用spring依赖注入详见–>依赖注入分析 1.创建实体类User类 package com.hao.domain; public class User { private String ...
- Spring-Bean的依赖注入分析-01
###我们先通过一个例子弄明白为什么要使用依赖注入### 1.创建业务层UserService接口及UserServiceImpl实现类(接口代码省略) public class UserServic ...
- 用asmlib方式创建oracle集群ASM磁盘(oracleasm)
创建asm磁盘的几种方式 创建asm方式很多主要有以下几种 1.Faking方式 2.裸设备方式 3.udev方式(它下面有两种方式) 3.1 uuid方式 3.2 raw方式(裸设备方式) 4.as ...
- Python 国家地震台网中心地震数据集完整分析、pyecharts、plotly,分析强震次数、震级分布、震级震源关系、发生位置、发生时段、最大震级、平均震级
注意,本篇内容根据我老师布置的数据分析作业展开.请勿抄袭,后果自负! 前情提要 编写这篇文章是为了记录自己是如何分析地震数据集,使用模块,克服一系列 \(bug\) 的过程.如果你是 \(python ...
- 通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组。试编程。