本实验通过解决三个问题,训练了基本的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. jQuery实现数字时钟

    运行效果: 源代码: 1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta char ...

  2. flex布局控制最后一个元素右浮动

    可以在最后一个元素添加css属性 margin-left: auto; 例如我一排排列的元素 ,子元素并没有完全排列撑开父元素的宽度,这时候要使最后一个元素想最右 可以让最后一个元素的 margin- ...

  3. Python入门-初识变量类型

    上一篇我们学习了第一行代码,我们print()了很多代码,我们可以print哪些东西呢,这一篇来讲. print()括号里面可以放哪些东西呢?..可以放很多东西,只要是Python的全部数据类型都可以 ...

  4. LeetCode 剑指 Offer 22. 链表中倒数第k个节点

    剑指 Offer 22. 链表中倒数第k个节点 题意 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点. ​ 例如,一个链表有 6 个 ...

  5. LibreOffice(开源免费办公软件)

    LibreOffice(开源免费办公软件) 官方地址 中文网站:https://zh-cn.libreoffice.org/ 下载地址: https://zh-cn.libreoffice.org/d ...

  6. 痞子衡嵌入式:大话双核i.MXRT1170之单独在线调试从核工程的方法(IAR篇)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是i.MXRT1170下单独在线调试从核工程的方法(基于IAR). 两年前痞子衡写过一篇<双核i.MXRT1170之Cortex-M ...

  7. git的.gitignore文件内容

    **/pom.xml.versionsBackup **/target/ **/out/ *.class # Mobile Tools for Java (J2ME) .mtj.tmp/ .idea/ ...

  8. float,short类型赋值运算问题

    float f = 3.4; 有错吗? 有错,因为浮点类型默认是double类型,double类型赋值给float类型是大类型赋值给小类型需要进行强转,可在3.4前加(float)进行强转,或者在声明 ...

  9. NodeJs学习日报day6——路由模块

    const express = require('express') const app = express() app.get('/user', function(req, resp) { resp ...

  10. JavaScript学习总结9

    今天学习了表单提交,JQuery部分知识