复习blog3

Abstract Data Type(ADT)

对抽象类型的操作可分为以下四类:

Creators:产生类型的新对象。

Producers:在已有对象的基础上产生新的对象。

Observers:输入抽象类型的对象,返回其他类型的对象。

Mutators:改变对象。

ADT实例:int

creators:0,1,2,......

producers:+,-,*,/

observers:==,!=,<,>

matutors:none(因为int是不可变的)

ADT实例:List

creators:ArrayList and LinkedList constructors,Collections.singletonList

producers:Collections.unmodfiableList

observers:size,get

mutators:add,remove,addALL,Collections.sort

(List是可变的)

Representation Independence:

好的ADT应该是表示独立的。

Testing an Abstract Data Type:

为每一个操作设计测试方法,测试方法间不可避免的会相互影响,测试creators,producers,mutators只能通过调用observers来观察结果,测试observers只能创建对象来进行观察。

Invariants of an ADT:

好的ADT最重要的属性就是保持其不变性,在程序运行过程中,程序始终保持不变的性质,ADT应由自身确保不变性,而不是依赖于调用者或者其他模块。

Rep Invariant and Abstraction Function:

两个值空间:

R:实现时用到的值空间;

A:需要支持的值空间;

例如:

抽象函数AF:R->A

RI:R->boolean 

RI表示空间R中的r是否被AF映射到空间A中的某个值,RI形成了空间R的一个子集,且子集中的所有元素均被AF映射到了空间A中。

例:

Checking the Rep Invariant:

在视线中采用断言技术来检查不变性是否保持,且应该在所有的creators和mutators作用类型方法的最后检查不变性。

Documenting AF and RI:

在类中定义Rep的位置说明AF,RI和不变性。

实例1:

实例2:

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值