自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

提示
确定要删除当前文章?
取消 删除