软件构造——学习笔记5

ADT等价性

ADT的等价性是对于客户端角度而言的,其等价性可以从以下体现

(1)通过AF:AF若映射到同样的结果,则等价

(2)通过关系:等价关系是自反,对称,传递的

(3)通过观察行为:站在外部观察者的角度,调用观察来判定其等价

==和equal

(1)==是引用等价性,意为两个引用是否指向同一个对象,即同一个内存地址    

(2)equals(是对象等价性,在自定义ADT时,需要对其进行重写,来保证判断其

等价的条件。   == 对基本数据类型,使用==判定相等 , 对对象类型,使用equals()

举例:

注意Stringbuilder的equals等同于==,所以c不对

 

重写:
字面意义理解重写就是 重新写一遍的意思。这个操作发生在继承期间,在运行时存在继承关系的类型对象可以互相转换。子类型也可以重写(override)父类的方法,替换为自己的实现代码。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。

 

重载:

在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同重载也可以发生在父类与子类之间(子类重载父类的方法)

 

接口与类:

我们可以理解为接口是对动作的抽象,抽象类是对根源的抽象。所以,在高级语言上,一个类只能继承一个类(抽象类)(就好比人不能是其他动物),但是可以实现多个接口(运动接口,睡觉借口等动作)。

接口相当于规定了ADT所需的未实现的操作(方法),这是用户所关注的。

类真正地在代码层面实现了接口规定的ADT操作,并且实现了ADT内部的数据存储

ADT的几种操作:

构造器creator,输入一些其它类型的对象,创建一个该ADT对象。例如创建一个新集合new()或者现实中的构造函数。

生产器producer,通过该ADT的旧对象,创建一个该ADT的新对象,例如计算当前集合与S的交集的方法ins(S)。

观察器observer,通过该ADT本身的数据以及传入参数,计算得到其它类型的值。例如检查集合里是否有x的方法find(x)。

变值器mutator,作出“修改ADT内部数据”的行为,是可变对象与不可变对象的本质区别!例如将x加入集合并返回加入x后的集合大小的方法add(x)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值