- 博客(6)
- 收藏
- 关注
原创 软件构造复习笔记 rep泄露
在面向对象的编程中最重要的就是把用户和ADT的实现方式隔离开,用户即不知道ADT是如何实现的也不知道ADT中有什么类型的数据。因此rep泄露可以说是面向对象编程的天敌。 一些简单的rep泄露的产生原因我们都很清楚了,如没有用private字段保护、在观察器中返回了可变类型的rep等等,这些都是比较容易被察觉到的rep泄露。但是还有一种非常容易被忽视的泄露,那就是在构造器中的泄露。即用户向构造器中传递了一个可变数据类型,而构造方法直接将这个变量赋值给自己的成员属性,这时就会产...
2021-07-06 22:21:04
196
原创 软件构造复习笔记 ADT构造
今天复习软件构造的时候,复习到了几个有意思的细节想分享一下。首先是这张ppt,复习到这张图的时候我注意到了之前没注意的一个点,就是在构造器中虽然可以将对象作为参数,但不能将正在构造的对象作为参数。一开始我想不明白为什么要这么规定,最后我想出能够说服我自己的解释就是构造是一个从无到有的过程,如果我们用一个已有的对象再去构造另一个同类型的对象那这个方法的行为就决定了它实际上是一个生产器而不是构造器。 同理我们再来看下一张ppt这张PPT中构造器...
2021-07-05 21:30:22
222
原创 软件构造复习笔记 规约
我在第一次了解到规约的时候是相当抵触的,因为规约这种东西我们自己写代码的时候往往是又用不上的,而写规约有需要占用额外的时间。这种想法到了第二次实验时有所改善,我想从我做第二次实验时的想法来谈谈我对规约的理解。 软件构造的第二次实验基本是个填空的过程,需要我们根据接口用两种方法来实现图。刚刚拿到实验模板的时候我完全不知道要做些什么,不知道接口中方法的具体功能,不知道方法输入参数的作用。但是规约很好的解决了这个问题。实验二中接口的每一个方法都提供了对应的规约,通过规约我们可以知...
2021-07-04 22:13:59
118
原创 软件构造笔记 等价性
在编写程序时,我们常常需要比较两个对象是否等价。在我们学习C语言的时候,我们几乎都是使用==来判断两个值是否相等。但是这个方法在面向对象的Java中是不可取的。 这是因为==在Java中的行为是比较两个两个对象的地址是否相等。也就是说==只能判断两个对象是否是同一个对象,而不能判断两个对象是否等价。打个比方,在实验一和实验二中我们都用到了Person类,在设计Person类的时候,我只给他安排了一个name作为成员属性。理论上只要name等价我们就能判断...
2021-07-03 20:43:13
129
原创 软件构造复习笔记 可变类型与不可变类型
在Java语言中数据的类型分为可变与不可变类型两种。典型的例子就是String和StringBulider两个字符串类型。不可变类型与C语言中的指针颇为相像,它指向一个值。如果试图通过赋值语句来改变一个不可变数据类型的值会导致“指针”指向一个新的值,而不会使原来的值发生变化。可变数据类型中的值是一个实实在在的变量,通过可变类型中的变值器来改变一个可变数据类型的值会实实在在的使得这个值发生改变。根据上述表述我们不难看出,可变数据类型要比不可变数据类型要来的省空间。因为一旦我们改变不可变数据类型的引
2021-07-02 21:21:50
119
原创 哈工大计算机系统大作业 2021
计算机系统大作业题 目 程序人生-Hello’s P2P 专 业 计算机类 学 号 1190200416 班 级 1903005 学 生 陈睿奕 指 导 教 师 史先俊 计算机科学与技术学院2021年5月摘 要本...
2021-06-27 14:08:04
731
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人