什么是ADT

Abstract Data Type,抽象数据类型,是指数据结构作为一个软件组件的实现。ADT的接口用一种类型和该类型上的一组操作来定义,每个操作由它的输入和输出定义。

ADT并不会指定数据类型如何实现,这些实现细节对于ADT的用户来说是隐藏的,并且通过封装(encapsulation)来阻止外部对他的访问。

数据结构(Data Structure)是ADT的实现,在诸如c++之类的面向对象语言中,ADT及其实现组成了类(class)。同ADT联系在一起的每个操作均由一个成员函数(member function)来实现。数据结构是指存储在计算机内存中的数据,文件结构是指外存储器中数据的组织。

对于使用同一ADT的两个应用程序,可能存在一个应用程序使用的ADT特殊方法比另一个多的情况或者这两个程序对该ADT的操作有不同的时间需求。正是由于应用程序的需求存在差异,才使一个给定ADT有多种实现形式的可能性。

问题:从直觉上讲,问题无非是一个需要完成的任务,即一组输入就有一组对应的输出。

算法:算法是指解决问题的一种方法或者一个过程。

程序:一个计算机程序被认为是使用某种程序设计语言对一种算法的具体实现。

换种方法说,我们知道一些固定的数据类型比如int、float、char、double等等,但是这些好像并不能满足我们想做的事情。于是通过抽象数据类型,我们可以创造自己需要的数据类型,比如想实现一个Person数据类型表示人类,Dog数据类型表示狗,人类可以跑跳学习睡觉,狗可以跑跳叫但是它不用学习。抽象数据类型就是我们自定义的一种数据结构,它相当于把一些我们需要实现某些功能需要用到的一些相互关联的基本数据类型打包起来,用作新的数据类型,在这个新的数据类型上我们可以定义多种操作,来使这个抽象数据类型获得强大的功能,比如我们定义了一个狗的抽象数据类型,我们需要让它实现跑、跳、睡觉、叫等操作来实现一只完整的狗。

定义:

抽象数据类型可以使用三元组来表示
ADT = <D, S, P>
D : 数据对象,S : D 上的关系集,P : D 上的一组操作。
一般采用如下的结构来定义抽象数据类型:

在这里插入图片描述

 

抽象数据类型的实现:


在Java中,ADT一般是通过定义一个类来实现的
抽象类型的操作可以分为4类:
(1) 构造器:创建该类型的新对象。
(2) 生产器:从该类型的旧对象创建新对象。
(3) 观察器:获取抽象类型的对象并返回不同的类型。
(4) 变值器:改变对象属性的方法。
这里举个例子:
数据类型int:
–构造器:数字文字0,1,2,…
–生产器:算术运算符+、-、*、/
–观察器:比较运算符==,!= , < , >
–变值器:无(因为int是不可变的)

使用ADT有什么好处呢?


在模块化编程中,ADT是必不可少的。ADT提供了灵活的修改,ADT接口明确定义了程序访问的方法。
利用抽象数据类型,有利于算法的研究,因为它可以把具体的数据结构表示和算法相分隔开。
利用封装好的抽象数据类型,我们可以使操作更加集中和具体。
抽象数据类型的使用可以使用户不能直接访问数据表示,用户程序只能通过我们给定的接口中提供的操作来访问数据的值。这样的话,利用接口,我们就可以把所有的数据表示和操作方法的实现与用户程序完全地隔离开。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值