- 博客(16)
- 收藏
- 关注
翻译 【MIT软件构造】Equality
引言由前文知java提供了抽象数据类型ADT,使数据类型不再表现于具体属性,而表现于ADT在用户眼中的特征。可以想到 ,定义并阐明ADT的相等关系是很有必要的。等价关系一个等价关系E具有如下性质自反性:E(t, t) ∀ t ∈ T对称性:E(t, u) ⇒ E(u, t)传递性:E(t, u) ∧ E(u, v) ⇒ E(t, v)显然,我们定义的相等关系应该是一个等价关...
2020-04-07 19:07:42
343
翻译 【MIT软件构造】ADT Patterns: Interfaces, Generics, and Enums
接口(Interfaces)基本概念不再赘述,值得注意(记住)的有几点:接口不应该有构造函数只有静态方法才能拥有方法体接口实现不能破坏表示不变性接口实现可以添加接口没有的方法,但是不能缺少接口声明的方法接口实现不应该违背接口规约(比如接口规约声明为不可变类型,但在实现类里加入了mutator)子类型(subtype)a是b的子类型,则a要么implement b,要么exte...
2020-03-31 20:50:41
239
翻译 【MIT软件构造】Abstraction Functions & Rep Invariants
不变量(Invariants)对于一个ADT,在它的整个生命周期中都应保持一个性质是不变的,这个性质便是不变量。如前文提到的类的不变性(Immutability)就是一个不变量,指在整个ADT的生命周期中,这个类的属性值均不应改变表示暴露(representation exposure)对于下列一个Tweet类,我们说它是存在表示暴露的,即这个ADT的属性暴露给了用户/** * This...
2020-03-29 20:39:16
314
翻译 【MIT软件构造】Abstract Data Types
Java访问权限对于类:public:可以被其他任何文件访问package-private(默认):只能在这一个包中被访问对于成员:ADT是什么抽象数据类型,包括抽象化(Abstraction)、模板化(Modularity)、封装性(Encapsulation)、信息隐藏性(Information hiding)、责任分离化(Separation of concerns),以达到减...
2020-03-28 22:44:59
306
翻译 【MIT软件构造】Designing Specifications
规约的评判维度确定性(deterministic):对于确定的输入,规约规定的输出的确定性declarativestrong确定性考虑下列两个spec的区别static int findExactlyOne(int[] arr, int val)requires: val occurs exactly once in arreffects: returns index i suc...
2020-03-25 14:17:50
220
翻译 【MIT软件构造】Specifications
行为等价性在某个所给的规约情况下,两个程序的表现在用户看来是完全相同的,称为行为等价性。规约作用:帮助程序员协作、明确目标,作为用户的使用说明。同时程序的具体实现用户不需要知道,起到了保护的作用原则:“你若违反规则,我便不负责任”构成:方法声明+先决条件+结果说明static int find(int[] arr, int val)requires: val occurs exa...
2020-03-24 20:21:38
412
翻译 【MIT软件构造】Static Checking & Mutability & Immutability
java检查静态检查:在程序运行之前会自动发现该错误。动态检查:执行代码后会自动发现该错误。不检查:该语言根本无法帮助您找到错误。静态方法public class Hailstone { /** * Compute a hailstone sequence. * @param n Starting number for sequence. Assumes ...
2020-03-24 19:06:50
213
原创 【Java】杂0x00
利用java优先队列创建最大堆:PriorityQueue<Integer> queue = new PriorityQueue<>((o1, o2) -> o2 - o1); // 最大堆①lambda表达式在java8后引入,可将函数直接写入参数表,提高了代码紧凑性//接收参数o1,o2,返回o2-o1(o1, o2) -> o2 - o1更...
2020-03-23 16:48:00
117
原创 Maven构造jar包
Maven安装与使用安装网站:http://maven.apache.org/install.html安装后根据存放位置添加环境变量如下并添加path变量然后在cmd中就可以看到maven安装成功了...
2020-03-05 12:18:42
156
原创 HITICS大作业
计算机系统大作业计算机科学与技术学院2019年12月摘 要本文以一个非常简单的hello程序为载体,深入浅出地展示了程序在linux系统上的整个生命周期,并基于这个过程较为详细地分析了其中涉及到的linux系统的各种软件与硬件的管理方式,包括C程序编译、链接过程、计算机存储体系、异常控制流、虚拟内存系统等几个方面。随着分析的进行,我们能在整体的层次上看清每个程序是如何运行的,同时也不失对...
2019-12-26 21:56:08
439
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人