- 博客(10)
- 收藏
- 关注
原创 ADT和OOP中的引用等价性、对象等价性、观察等价性、行为等价性
最近在复习软件构造,学习到ADT和OOP的等价性这一部分,这一部分对于等价性提出了四个概念:引用等价性、对象等价性、观察等价性、行为等价性,单独看还是能理解,但回过头来一综合,还是有点懵,分不太清他们之间的联系,下面就来研究一下这四者之间的关系引用等价性比较简单粗暴,只需考虑两个对象是否指向内存里的同一段空间,及内存地址是否相等。引用等价性也是“==”操作符、以及Object类实现的缺省的equals()方法的判断逻辑;对象等价性就是判断两个对象的内容是否相等,前面说过,Object类实现的缺省的equal
2022-06-11 11:04:57
225
原创 软件构造概念:Invariant(不变量)和Rep Invariant(表示不变性)的关系
最近在复习软件构造课程,在学习ADT(抽象数据类型)这一部分时遇到一个困惑,Invariant(不变量)和Rep Invariant(表示不变性),这两个英文单词里面都带有Invariant,那这二者是否存在一定的关系呢?首先来看一下二者的定义 Invariant(不变量):程序在任何时候总是true的性质,即一种性质,如immutability不可变性;Rep Invariant(表示不变性):某个具体的“表示”是否是“合法的” ,即一种条件ADT的Invariant是ADT的一种特性,需要通过方方面面的
2022-06-10 17:19:29
470
原创 在接口实现类中,加不加@Override的区别
简单来说@override注解是告诉编译器,下面的方法是重写父类的方法。 如果不写@override注解去直接重写方法,编译器是不会判断你是不是正确重写了父类中的方法的。如重写方法时参数与父类不同,程序是不会提示报错的。这会留下一个潜在的bug。 当你写了@override注解时,程序会判断你是否正确的重写了父类的对应方法。而且加上此注解后,程序会自动屏蔽父类的方法。补充: 一般来说,写与不写没什么区别,JVM可以自识别。 写的情况下:即说明子类要覆盖基类的方法,基类必须存在方法
2022-05-30 23:30:17
2737
原创 软件构造实验二记录
实验目标概述本次实验训练抽象数据类型(ADT)的设计、规约、测试,并使用面向对象 编程(OOP)技术实现 ADT。具体来说:⚫ 针对给定的应用问题,从问题描述中识别所需的 ADT;⚫ 设计 ADT 规约(pre-condition、post-condition)并评估规约的质量;⚫ 根据 ADT 的规约设计测试用例;⚫ ADT 的泛型化;⚫ 根据规约设计ADT的多种不同的实现;针对每种实现,设计其表示 (representation)、表示不变性(rep invariant)、抽..
2022-05-20 09:21:42
175
原创 计算机系统 大作业
摘 要本文介绍了Linux系统下hello程序的一生,借助Linux环境下的开发工具,分析了从源文件hello.c经预处理、编译、汇编及链接成为可执行文件hello,再通过shell的动态链接执行hello进程的全过程。在shell执行进程的过程中,还结合课本的知识分析了hello的内存管理、进程管理以及I/O管理,异常控制流、储存层次结构、动态链接机制以及物理与虚拟内存等内容。让我们对计算机系统有更深入的了解。关键词:预处理;编译;汇编;链接;内存管理;进程管理;I/O管理;(摘要0.
2022-05-20 08:39:49
1387
原创 Java 中删除List中指定的元素
最近在写软件构造实验,需要删除List中一个满足条件的值,自然而然想到通过调用List中的remove()函数进行删除:代码如下:private final List<Edge<L>> edges = new ArrayList<>();Iterator<Edge<L>> iterator = edges.iterator(); while(iterator.hasNext()){ Edge<
2022-05-19 23:20:59
3821
原创 在IDEA中导入本地项目
最近的软件构造实验需要把项目交到GitHub上,想要验证一下交上去的东西能不能运行,打算从GitHub上把提交的项目克隆下来,那克隆下来的项目怎么导入到IDEA中运行呢第一步:从GitHub上clone代码-Download ZIP第二步:下载好之后,解压,记住位置在IDEA欢迎页中选择open,找到下载好的位置-OK-Trust Project第三步:如果GitHub的项目包含了原来idea里全部的文件,包括.idea、out等,且不需要tomcat等服务,可以直接..
2022-05-05 22:31:06
7843
原创 软件构造实验一记录
语言:Java开发工具:IntelliJ IDEA 2022.1社区版1.实验目标本次实验通过求解选自MIT和CMU三个问题,训练基本 Java 编程技能,能够利用 Java OO 开 发基本的功能模块,能够阅读理解已有代码框架并根据功能需求补全代码,能够 为所开发的代码编写基本的测试程序并完成测试,初步保证所开发代码的正确性。 另一方面,利用 Git 作为代码配置管理的工具,学会 Git 的基本使用方法。 基本的 Java OO 编程 基于 Eclipse IDE 进行 Java
2022-05-02 09:05:33
1289
原创 Eclipse下JUnit单元测试的简单使用
最近的软件构造实验课需要用到JUnit单元测试工具,在网上查找了一些资料,自己尝试着试验了一下,觉得有必要把简单的使用过程记录下来。工具:Eclipse第一步:新建一个文件File-new-Java project第二步:完成之后,在src下创建两个包,一个存放被测试代码,另一个存放测试代码,这里分别是exercise1和test被测试代码选用一个计算h-index的程序(是一道leetcode题目,写的不好请见谅)package exercise1;import jav.
2022-04-25 23:29:39
2027
原创 软件构造随笔一
这个周开了一门新课,软件构造 ,接触这门课之前,认为它是关于如何开发软件的,即教会我们写软件,但上了两堂课之后,发现这门课并不仅仅涵盖写软件这样浅层次的知识,更多的是在试图传授思维,让我们对软件开发进行具体实践的同时,能在宏观上把握一个软件的整体。软件这一概念最早由图灵提出,人们对软件的理解经过了一系列的演化,现在所说的软件通常包括单元组件和数据/控制流两个部分。理解一个软件通常要从构建阶段和运行阶段两个维度来考虑,在软件构造这门课中,构建阶段需要考虑到源码、语法结构、类、包、文件、库、测试样例、代码变
2022-04-23 21:04:57
129
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人