数据类型和抽象数据类型

<(^-^)>

我们知道在各种编程语言中都会有数据类型。

一.数据类型

先看看为什么会有不同的数据类型呢?很简单,很多东西不能一概而论,而是需要更精确的划分。计算机计算1+1并不需要多么大的空间,但是计算10000000000+1000000000就得需要有个比较大的空间来放。还有有时候会计算小数,小数的位数不一样,需要的空间也就不一样。数字1和字母a也需要区分啊,于是开发者就想出了“数据类型”这一招,用来描述不同的数据的集合。

我记得最早接触的数据类型就是int了。当初一个int a;就把我看得神魂颠倒,不知所以。像这种类型,就是一个基本的数据类型。以前总以为数据类型就是一个描述数据到底是什么玩意儿的东东,现在再去看,倒是有点儿浅了。数据类型学术点呢,是一个值的集合和定义在这个值集合的一组操作的总称。一种数据类型也可以看成是一种已经实现了的“数据结构”。

按“值”是否可分解,将其分为两类:

1.原子类型:其值不可分解,通常由语言直接提供,像C++中的int,float,double等等。

2.结构类型:其值可以分解为若干部分(分量),是程序员自定义的,比如结构体,类等等。

ps:对于什么是“原子”,经常会看到什么“原子操作”,“原子类型”,一般就是指不可再分的。

二.抽象的数据类型

抽象数据类型(abstract data type,ADT)只是一个数学模型以及定义在模型上的一组操作。通常是对数据的抽象,定义了数据的取值范围以及对数据操作的集合。

其实,数据类型和抽象数据类型可以看成一种概念。比如,各种计算机都拥有的整数类型就是一个抽象数据类型,尽管实现方法不同,但他们的数学特性相同。

抽象数据类型的特征是实现与操作分离,从而实现封装。

看到有人举出了“超级玛丽”例子,觉得写得很不错,如下:

就像“超级玛丽”这个经典的任天堂游戏,里面的游戏主角是马里奥,我们给他定义了基本操作,前进、后退、跳、打子弹等。这就是一个抽象数据类型,定义了一个数据对象、对象中各元素之间的关系及对数据元素的操作。至于,到底是哪些操作,这只能由设计者根据实际需要来定。像马里奥可能开始只能走和跳,后来发现应该增加一种打子弹的操作,再后来又有了按住打子弹键后前进就有跑的操作。这都是根据实际情况来定的。

事实上,抽象数据类型体现了程序设计中问题分解和信息隐藏的特征。它把问题分解为多个规模较小且容易处理的问题,然后把每个功能模块的实现为一个独立单元,通过一次或多次调用来实现整个问题。

部分内容转自:http://blog.sina.com.cn/s/blog_6b32b0870100twya.html

时间: 2024-08-03 15:13:43

数据类型和抽象数据类型的相关文章

C++抽象数据类型,如何抽象

C++是个多范式的语言,所以C++难学,所以C++强大,可比起java,C#,用C++来做软件开发,开发周期要长很多. 为什么呢?这是因为C++的自由度高,换句话说自由度越高地语言,开发软件的周期越长,这是有一定道理的 自由度过高就不容易掌控,java和C#它们的库很强大,这在一定程度上就限制了自由度,相当于提供了一套模式,方法,开发人员不需要去为实现这些东西而操心 然而C++程序员却需要为这些费劲心力,这体现在实现细节上. 本文要说的是抽象数据类型,抽象数据类型 ADT 一种重要的数据类型.它

抽象数据类型总结:复数 adt 和 FIFO 队列adt

定义:抽象数据类型(abstract data type, ADT)是指"只"通过接口进行访问的数据类型.我们将那些使用ADT的程序叫做客户,将那些确定数据类型的程序叫做实现. 客户程序除了通过接口中提供的那些操作外,并不访问任何数据值.数据的表示和操作都在接口的实现里,和客户完全分离. 数据结构.数据类型和抽象数据类型 数据结构.数据类型和抽象数据类型,这3个术语在字面上虽不同但相近,反映出它们在含义上既有区别又有联系. 数据结构 数据结构是计算机科学与技术领域常用的术语.它用来反映

java抽象数据类型

抽象数据类型抽象数据类型是描述数据结构的一种理论工具.在介绍抽象数据类型之前我们先介绍一下数据类型的基本概念.数据类型(data type)是一组性质相同的数据元素的集合以及加在这个集合上的一组操作.例如Java 语言中就有许多不同的数据类型,包括数值型的数据类型.字符串.布尔型等数据类型.以Java 中的int 型为例,int 型的数据元素的集合是[-2147483648,2147483647]间的整数,定义在其上的操作有加.减.乘.除四则运算,还有模运算等.定义数据类型的作用一个是隐藏计算机

抽象数据类型

抽象数据类型是描述数据结构的一种理论工具.在介绍抽象数据类型之前我们先介绍一下数据类型的基本概念.数据类型(data type)是一组性质相同的数据元素的集合以及加在这个集合上的一组操作.例如Java 语言中就有许多不同的数据类型,包括数值型的数据类型.字符串.布尔型等数据类型.以Java 中的int 型为例,int 型的数据元素的集合是[-2147483648,2147483647]间的整数,定义在其上的操作有加.减.乘.除四则运算,还有模运算等.定义数据类型的作用一个是隐藏计算机硬件及其特性

【Python&amp;数据结构】 抽象数据类型 Python类机制和异常

这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Python编程,借着本次机会仔细学习一下. 抽象数据类型 最开始的计算机语言,关注的都是如何更加有效率地计算,可以说其目的是计算层面的抽象.然而随着这个行业的不断发展,计算机不仅仅用于计算,开发也不仅只关注计算过程了,数据层面的抽象也变得同样重要.虽然计算机语言一开始就有对数据的抽象,但是那些都只是对一些最基本的

计算机软考笔记之《抽象数据类型(ADT)》

1.引言 1抽象数据类型和数据结构的关系 抽象数据类型(ADT)是一种比数据结构处于更高抽象层的数据类型,ADT使用数据结构来实现. 2数据类型的定义和应用于数据的操作定义是ADT背后的一部分概念,隐藏数据上的操作是如何进行的. 3分类:简单抽象数据类型和复杂抽象数据类型 简单ADT:整数.实数.字符.指针: 复杂ADT:需要建立.不需要详细说明实现过程的泛化操作成为抽象. 抽象概念意味着: ①知道一个数据类型能做什么: ②如何去做是隐藏的. 4定义 抽象数据类型就是与对数据类型有意义的操作封装

抽象数据类型(ADT)入门(一)

抽象数据类型(ADT)入门(一) 1.抽象数据类型(Abstract Data Types,ADT)和ADT的实现 抽象数据类型:一个数据元素集合以及在这些数据上的操作. ADT的一个实现包括存储数据元素的存储结构以及实现基本操作的算法. 在这个数据抽象的思想中,数据类型的定义和它的实现是分开的,这在软件设计中是一个重要的概念.这使得只研究和使用它的结构而不用考虑它的实现细节成为可能.实际上,这通常使用在int.double.char和bool等预定义数据类型上的方法,使用这些数据类型的程序员在

ELF格式解析库之抽象数据类型

抽象?抽谁的象? ELF是一种链接执行格式,它规定了对于一个ELF文件的基本数据类型是什么样的.可是,要解析一个ELF文件,而这个ELF文件或者是32Bits 或者是 64Bits,反正字长是未定的,怎么办?难道我们要定义两套解析的接口,以对应不同的字长的ELF文件吗?如果要这样做,不是不可以,只是那样做为接口的设计增加了太大的负担.这里我们采用"抽象"的方式,将已有的两套基础数据结构封装成一个兼容的数据结构.这样,我们设计解析接口时,可以做到尽量的简化,大大的减轻了工作量. 因此,这

算法(第4版)-1.2.1 使用抽象数据类型

总结:本小节是关于抽象数据类型的综述,包括是什么.为什么.怎么办. 重点: 1. 研究同一个问题的不同算法的主要原因:它们的性能特点不同. 2. API:通过列出所有构造函数和实例方法(及操作)并简要描述它们的功用,说明抽象数据类型的行为. 3. Java中的所有数据类型都会继承toString()方法来返回用String表示的该类型的值.Java会在用+运算符将任意数据类型的值和String值连接时调用该方法. 可以重写toString()方法.必须声明为public String toStr