神秘的ADT

写在前面

课程中接触到了ADT,自感对其的理解还不够深刻,于是在这里做个总结,也算是复习了。

ADT与其类型

基本概念

  • 抽象数据类型(Abstract Data Type,ADT)是是指一个数学模型以及定义在该模型上的一组操作;即包括数据数据元素,数据关系以及相关的操作。
  • ADT由操作定义,与其内部如何实现无关。
  • 强调“作用于数据上的操作”,程序员和client无需关心数据如何具体存储的,只需设计/使用操作即可。

基本特性

  • 抽象化
  • 模块化
  • 封装

ADT的类型

  • Creators(构造器):创建某个类型的新对象,⼀个创建者可能会接受⼀个对象作为参数,但是这个对象的类型不能是它创建对象对应的类型。可能实现为构造函数或静态函数。t* → T (A creator implemented as a static method is often called a factory method 工厂方法)
  • Producers(生产器):接受同类型的对象创建新的对象。T+ , t* -> T
  • Observers(观察器):获取抽象类型的对象然后返回一个不同类型的对象/值。T+, t* → t
  • Mutators(变值器)改变对象属性的方法。变值器通常返回void,若为void,则必然意味着它改变了对象的某些内部状态;当然,也可能返回非空类型 T+ 。 t* -> t || T || void

Each T is the abstract type itself;
Each t is some other type.
The + marker indicates that the type may occur one or more times in that part of the signature.
The * marker indicates that it occurs zero or more times.
The | indicates or.

设计ADT的原则

  • 设计简洁、一致的操作。
  • 要足以支持用户对数据所做的所有操作需要,且用操作满足用户需要的难度要低。
  • 要么抽象、要么具体,不要混合 —— 要么针对抽象设计,要么针对具体应用的设计。

ADT的测试方法

测试creators, producers, 和 mutators:调用observers来观察这些 operations的结果是否满足spec;
测试observers: 调用creators, producers, 和 mutators 等方法产生或改变对象,来看结果是否正确。

参考博客链接:抽象数据型(ADT)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值