抽象数据类型(ADT)

文章介绍了ADT(抽象数据类型)的核心特性,包括数据抽象、封装、继承性和多态性,并详细阐述了ADT的四种操作方法:构造器、生产器、观察器和变值器。同时,讨论了可变与不可变类型对象的区别,以及抽象函数、表示不变量和表示泄露的概念,提出防御式拷贝作为避免表示泄露的策略。
摘要由CSDN通过智能技术生成

1.ADT的特性

  • 数据抽象:用ADT描述程序处理的实体时,强调的是其本质的特征、其所能完成的功能以及它和外部用户的接口(即外界使用它的方法)

  • 数据封装:将实体的外部特性和其内部实现细节分离,并且对外部用户隐藏其内部实现细节,它包含两层含义: 

    • ①将数据和其行为结合在一起,形成一个不可分割的独立单位;

    • ②信息隐藏,即尽可能隐藏数据内部细节,只留有限的对外接口形成一个边界,与外部发生联系。封装的原则使得软件错误能够局部化,大大降低排错的难度,便于软件的维护。 

  • 继承性:数据封装使得一个类型可以拥有一般类型的数据和行为,即对一般类型的继承。若特殊类型从多个一般类型中继承相关的数据和行为,则为多继承。 

  • 多态性:多态性是指在一般类型中定义的数据或行为被特殊类型继承后,具有不同的数据类型或呈现出不同的行为。

2.ADT的四种操作方法

(1)Creator(构造器)

构造一个之前并不存在的

(2)Producer(生产器)

在已有的基础上构造一个新的。比如用concat()连接两个字符串为一个新的字符串

(3)Observer(观察器)

接受抽象类型对象并返回一个不同类型的对象。例如,List中.size()方法,查看List中有几个元素,返回一个int对象

(4)Mutator(变值器)

改变对象属性的方法。例如List中.add()方法,向集合中增加一个新的元素

3.ADT类型

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

(2)不可变类型对象:其操作不改变内部值,而是构造新的对象

4.AF(抽象函数)

(1)表示值构成的空间R:开发者看到和使用的值

(2)抽象值构成的空间A:用户看到和使用的值

(3)AF:抽象函数就是R和A之间关系的映射函数,即将R中的值解释为A中的值

5.RI(表示不变量)

某个具体的表示是否为合法的(描述了什么为合法值)

6.Rep Exposure(表示泄露)

指在某些情况下,ADT向外部泄露了自己的表示,从而使调用者有能力修改ADT的内部表示。这种情况下有可能会破坏ADT的不变量,可能威胁到ADT的表示独立性。

可以使用防御式拷贝等方法来避免表示泄露。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值