抽象数据类型ADT

最近在复习软构,ADT是比较重点的内容,在这里整理一下,希望对看到的人有帮助。

说到ADT,主要内容就是AF和RI,想要弄清楚AF与RI,首先需要一些前置知识,然后解释一下AF和RI到底是什么,最后说明AF和RI的用法。

一、前置知识

1.针对操作的划分

我们可以针对操作将代码进行划分:

构造器:可以实现为构造函数或静态函数,没有返回值,是类直接调用的,可以用“从无到有”来概括。

生产器:根据构造器已经构造出来的东西,产生新的东西。可以理解为“从有到新”。

观察器:就是只对类中的属性进行观察,而不去改变。比如String中的size方法,只查看字符的数量,而不改变String。

变值器:仅存在于mutable类型中,就是改变值的部分。

2.设计ADT

需要满足以下三点:

1.设计简洁,操作一致。操作行为应该是内聚的。

2.对象每个需要被访问的属性都应该能够访问到,要最易支持cilent的需求。

3.要么抽象,要么具体,不要抽象与具体混合。

3.规约、表示与实现

规约:就是代码中说明功能的注释部分。

表示:类中构建变量部分的代码,也是这个类的基本属性。

实现:具体的操作函数。

二、RI与AF概念

RI是表示不变量,AF是不变量函数。实现者看到和使用的值叫表示值,构成的空间叫做R空间;cilent看到和使用的值叫抽象值,构成的空间叫做A空间。R对于A是有映射关系的,R对于A一定是满射,但未必是单射,也未必是双射。其中R到A的这种映射关系就叫做AF(不变量函数)。R空间中可能会有一些值映射不到A空间,这些可以映射到A空间的值叫做RI(表示不变量)。

三、AF和RI的用法

1.如何确定AF与RI

同样的R空间可能会有不同的RI,同样的R空间,同样的RI,可能会有不同的AF。所以要根据规约来确定AF和RI 是什么样的。

2.RI与AF的用途

就是用来设计ADT,步骤如下:

1.选择R和A

2.RI——合法表示值

3.如何解释合法表示值——映射AF

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值