Something about ADT

1.Abstraction Function and Rep Invariant

rep value: 数据是如何被真正实现的;现实世界存在的实体 

abstract value:数据被要求代表的含义;虚拟又抽象

AF:从rep value到abstract value是如何被映射的

       即实际的数据结构是怎么抽象成ADT被要求实现的类型的

RI:那些AF定义的rep value;或者说确保rep value属于AF的条件是什么

checkRep:检查RI是否为真,即确立条件是否成立

(默认对象和数组不能为空,即不在RI中进行说明,但要求在checkRep中实现检查非空)

2.override and overload

override:参数列表和返回值不能改变

              决定是父类还是子类调用时是运行时检查,看是哪个类的实例调用了该方法

overload:参数列表必须改变

               决定调用是编译器静态检查,观察参数列表确定调用者

3.Polymorphism

Ad hoc:overload

Parametric:泛型编程

Subtype:接口>抽象类>具体类 

              靠继承和实现来实现同一个名字多个功能 注意LSP原则

3.observational equality and behavioral equality

observational equality:调用creator, producer,observer方法都不能区分出两个对象的区别

                                即两个指向是否在程序运行的现阶段看起来一样

behavioral equality:即使调用mutator方法也不能区分区别

                           即两个指向在未来也一模一样 //来日可期

4.equals and "=="

equals:内容相等,即两个事物的内容是否一致

            自反性:x.equals(x)返回真

            传递性:如果x.equals(y)和y.equals(z)返回真,那么x.equals(z)也返回真

            对称性:x.equals(y)和y.equals(x)返回值相同

==:引用相等,即两个事物是否指向同一块内存

5.equals and hashCode

1.object类中的equals和hashCode方法:

equals: 判断是否指向内存中同一个地方

hashCode:返回内存地址


2.对于不可变类型必须重写equals和hashCode

equal:比较两个抽象数据,提供行为等价性

hashCode:将抽象值映射到一个整数

3.对于可变类型不应重写equals和hashCode

为了提供行为等价性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值