有关软件构造中的ADT

抽象数据类型(Abstract Data Type,ADT)是中计算机科学具有类似行为的特定类别的数据结构的数学模型;或者具有类似语义的一种或多种的数据类型。抽象数据类型是间接定义的,通过其上的可执行的操作以及这些操作的效果的数学约束(与可能的代价)。

ADT的特性:不变量;表示泄露;抽象函数AF;表示不变量RI

creator(构造器): 输入一些其它类型的对象,创建一个该 ADT 对象。例如创建一个新集合 new()。
或者现实中的构造函数。
producer(产生器):从一个存在的同样的数据类型产生一个新对象。
observer(观察器): 通过该 ADT 本身的数据以及传入参数,计算得到其它类型的值。例如检查
集合里是否有 x 的方法 find(x)
mutator(变值器):修改ADT内部数据。
表示独立性:client使用ADT时不需要考虑其内部如何实现,ADT内部表示的变化不应该影响spec和客户端。(用户只依赖规约,不依赖ADT的具体实现)
ADT需要始终保持不变量:保持程序的正确性,容易发现错误。
RI和AF:
ADT开发者关注的表示空间为R,client关注的抽象空间为A。RI描述了R中的某个子集是合法的,而AF则描述这个子集中的值是如何映射到抽象空间中的某个值。R中的非法子集在A中是没有映射的。
作为一种映射,AF为满射,并非单射,也不一定是双射。
                ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

 

而对于同样的R,可能有不同的RI。
同样的,对于同样的R和RI,也会存在着不同的AF。
        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        
设计ADT时:(1)选择R和A
                      (2)RI合法子集的选择
                      (3)AF解释合法子集
RI的定义:应该是一个真假值,布尔类型,及一个逻辑表达式
检查RI:随时检查RI是否满足,所有可能改变R的方法内都要检查。
对不可变的ADT来说,有的时候,其内部表示空间R可以变化:比如在运算时,存在公约数,可以先将其简化。对于client来说,A并未改变,此种改变是无害的,是有益的。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值