哈工大软件构造课程ADT有感

这周的课程学了ADT,也就是抽象数据类型,老实说刚学这个确实很懵,因为这个将我们之前的编程方式完全颠覆了,首先放一个图,来表示一下ADT的大体框架。

这里说明了一种新的编程思想,首先呢ADT是什么,说白了就是一个接口,里面放着spec但是没有任何的代码实现细节,只有一些功能的描述,在客户看到你的ADT的时候,他只会看到你的spec看不到你是如何实现的,这个就很好的体现了封闭性。而这些功能,说白了就是一些方法,主要分成四类:creator、producer、observer、mutator。而他们的具体实现呢,要靠下面的类来实现,也就是术语中的Rep和implementation。前者说白了就是属性(数据结构),而后者说白了就是方法(算法)。这个类中就要写出你的具体实现了,当然实现一个接口可以使用不同的数据结构,比如图,你可以底层使用数组或者链表,有多少个都可以,但是要确实的实现接口中的spec。这些呢,就是ADT的一个大体框架。

当然呢,这其中有一些必须要知道的概念,就比如上图中R和A。

A是用户提出的一个抽象空间。而R是你的数据结构表示抽象空间的一个表示空间。

这个映射必须是满射的,这里需要说明两个概念,RI和AF。

RI:是你的数据结构集合中的合法集合。而RI要求变化前后依旧合法。

AF:是从你的表示空间向抽象空间的一种映射。

也就是说你的实现用户功能的过程是:R---RI---AF---A

下面是一个例子:

最后一个概念就是数据泄露的安全声明,这个从字面上就比较好理解,就是一个自证清白的过程,说明一下我这个属性啊用的是private,我的数据类型啊是不可变的等等。

以上就是我对ADT的理解,也初步明白了软件构造的真正意思。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张丰麟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值