抽象数据类型ADT

本文深入探讨抽象数据类型(ADT),包括数据抽象、可变与不可变类型、操作分类,重点讨论抽象类型设计的经验法则,如保持操作简洁一致、提供足够操作、避免混合抽象与具体。此外,文章阐述了表示独立性、不变量的重要性,以及如何通过抽象函数和表示不变量来维护ADT的正确性。最后,提到了有益的可变性和表示泄露的安全性,强调了在ADT设计中记录RI和AF的必要性。
摘要由CSDN通过智能技术生成

目录

1 数据抽象

2 可变和不可变类型

3 抽象类型操作的分类

4 抽象类型设计

4.1 经验法则一

4.2 经验法则二

4.3 经验法则三

5 表示独立性Representation Independence

6 不变量Invariant

7 抽象函数

8 表示不变量 Rep Invariant

9 记录AF和RI

10 有益的可变性

11 记录RI、AF和表示泄露的安全性(Safety from Rep Exposure)


1 数据抽象

抽象类型强调“作用于数据上的操作”,程序员和客户无需关心数据如何具体存储的,只需设计/使用操作即可。ADT是由操作定义的,与其内部如何实现无关。例如,当我们谈到List时,我们说的不是linkedlist或array或任何其他表示列表的特定数据结构。相反,我们指的是一组不透明的值(不透明值)——可能具有满足List:get()所有操作规范的List类型的对象。

2 可变和不可变类型

可变类型的对象:提供了可改变其内部数据的值的操作。

不变数据类型:其操作不改变内部值,而是构造新的对象。

3 抽象类型操作的分类

      构造器:创建该类的新对象。creator : t* → T

      生产器:从该类型的旧对象中创建新对象。producer : T+, t*→T

      观察器:获取抽象类型的对象,并返回不同类型的对象。observer : T+, t*→t

      变值器:改变对象属性的方法。mutator : T+, t*→void | t | T

其中T是抽象数据类型本身,t是别的类型,+表示该类型可能在签名的该部分中出现一次或多次,*表示它发生了零次或更多次,|表示或。

4 抽象类型设计

设计好的ADT,靠“经验法则”,提供一组操作,设计其行为规约 spec。

4.1 经验法则一

设计简洁、一致的操作。每个操作都应该有一个定义良好的目的,并且应

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值