![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
软件构造
哈尔滨工业大学软件构造课程系类记录
_-sunshine-_
这个作者很懒,什么都没留下…
展开
-
软件构造之并发编程
一、基本概念并发:多个计算同时进行。其实上面这个定义并不准确,容易讲并发跟并行理解成同一个概念,其实不然,有人这么解释,我觉得很通俗易懂:并发,就像一个奶妈(CPU)给多个孩子喂奶,轮换着每个人都吃一口,表面上每个孩子都在吃饭,而并行,就像多个奶妈(CPU)给多个孩子喂奶,实际上每个孩子就是都在吃饭。进程:执行中程序的实例。线程:进程中的一个执行任务,负责当前进程中程序的执行。一个进程至少有一个线程,可以有多个线程。在《Java编程思想》中,有这么一段话,阐述了如何利用线程完成多任务的处理:.原创 2020-06-16 22:43:31 · 152 阅读 · 1 评论 -
软件构造Lab4+心得
软件构造Lab4心得Lab4是要求面向正确性和健壮性编程,要求在Lab3的基础之上,增强代码的正确性和健壮性。啥是正确性??啥是健壮性??实话是说,没上这门课之前,其它老师也经常会提到这两个词,但是一直都认为这两个词就是一个意思,讲完课之后才开始理解这两个词实际是在从不同的角度衡量代码的质量:正确性是代码能否针对规约的做出正确反应的度量,是在前置条件满足的情况下,代码能否满足相应的后置条件,这是代码的基本要求,没有正确性,其它性质再好也没用;而健壮性是代码能否针对规约之外的情况作出反应的度量,是代码原创 2020-06-07 00:12:42 · 135 阅读 · 0 评论 -
软件构造Lab3+心得
实验要求:在这次实验中,要求我们面向可维护性和可扩展性编程,面向至少三个有一定相似程度但又不完全相同的应用设计一套通用的ADT,完成几个不同场景的应用。个人心得:1.从哪下手???在实验指导书上,我觉得给了我们一些之后面向这种抽象程度比较高的ADT的设计的一些启发,我把这种方法叫做维度拆分。具体说来就是我们需要对各个应用场景做分析,可以这样去考虑,假如我不需要抽象出共用的ADT,就是针对某个应用场景去为它设计一套ADT,那么这个ADT究竟应该怎样设计,就比如,本次实验中的航班管理计划项,很自然,会去原创 2020-05-24 23:34:39 · 198 阅读 · 0 评论 -
软件构造Lab2笔记+心得
**软件构造Lab2笔记+心得**Lab2主要训练ADT的设计、规约以及测试。ADT中的几个基本概念:**表示不变量(representation invariant)????*指的是该ADT的表示永远应该具备的性质,就比如说设计一个三角形的ADT,三条边、内角和180度都应该成为该ADT的表示不变量。这个概念在衡量该ADT的固有属性。**抽象函数AF(Abstraction Functio...原创 2020-04-15 00:10:14 · 148 阅读 · 0 评论 -
软件构造Lab1:凸包问题之Gift Wrapping礼品包装算法
凸包问题:Gift Wrapping算法凸包问题凸包(Convex Hull)是一个计算几何(图形学)中的概念。简而言之,就是给定平面点集,找出该点集中最外圈的点构成凸多边形,使得该平面点集中所有的点都在该凸多边形内或该多边形边上。正如上图所示,红色圈圈部分就是该平面点集的凸包。凸包问题算法凸包问题的解法一般有如下几种:穷举法(蛮力法) O(n3)分治法 ...原创 2020-03-05 14:57:07 · 939 阅读 · 0 评论 -
软件构造Lab0:eclipse安装配置+JDK8
一、JDK下载地址1.eclipse官网:根据自己实际需要下载不同版本的eclipseIDE,新手上路,推荐下载Commiters,方便操作;专业一点的使用场景,推荐Enterprise。JDK推荐JDK8,JDK8虽然不是最新版本,但却是JAVA稳定支持的版本,比较新的版本的确支持一些新的语法格式,但一般而言,不是那么常用。网址:https://www.eclipse.org/downl...原创 2020-02-25 21:32:05 · 345 阅读 · 0 评论