
类型是一个与数据结构密切相关的概念。它最早出现在高级编程语言中,用于描述程序中 *** 作对象的特性。在用高级语言编写的程序中,每个变量、常数或表达式都有其所属的特定数据类型。类型显式或隐式地指定程序执行期间变量或表达式值的所有可能范围,以及对这些值允许的 *** 作。因此,数据类型是一组值和在这组值上定义的一组 *** 作。
在高级编程语言中,数据类型可以分为两类:原子类型和结构类型。原子的价值是不可分解的。如C语言中的整型、字符型、浮点型、双精度型等基本类型,分别用保留字int、char、float、double来标识。结构类型的值是按照一定的结构由几个分量组成的,所以可以分解,其分量可以是非结构化的,也可以是结构化的。例如,数组的值由几个部分组成,每个部分可以是整数或数组。从某种意义上说,数据结构可以看作是“一组结构相同的值”,而数据类型可以看作是一个数据结构和在其上定义的一组 *** 作。
抽象数据类型
抽象数据类型(ADT)是指一个数学模型和在该模型上定义的一组 *** 作。抽象数据类型的定义取决于它的一组逻辑特征,但与它在计算机中的表示和实现方式无关。即无论其内部结构如何变化,只要其数学特性不变,就不会影响其外部使用。
抽象数据类型和数据类型本质上是一个概念。比如各种计算机拥有的integer类型就是一种抽象数据类型。尽管它们可以在不同的处理器上以不同的方式实现,但由于相同的数学特征,它们在用户看来都是一样的。所以“抽象”的意义在于数据类型的数学抽象。
另一方面,抽象数据类型的范畴更广,不再局限于前述处理器中定义和实现的数据类型,还包括用户在设计软件系统时自己定义的数据类型。为了提高软件的可重用性,在现代编程方法论中,需要在构成软件系统的每个相对独立的模块上定义一组数据和一组应用于这些数据的 *** 作,并在模块内部给出这些数据的表示和它们 *** 作的细节,而在模块外部只使用抽象的数据和 *** 作。这就是面向对象的编程方法。
抽象数据类型的定义可以由一个数据结构和其上定义的一组 *** 作组成,数据结构包括数据元素和元素之间的关系,所以抽象数据类型一般可以由元素、关系和 *** 作来定义。
抽象数据类型的特点是使用与实现分离、封装和信息隐藏。也就是说,在抽象数据类型的设计中,类型的定义与其实现是分离的。
顾名思义抽象编程是指在编程的过程中把大象抽出来。如何在编程的过程中把大象抽出并保持程序的可移植性,这个一直以来是一个困扰全世界各类语言编程的程序员的一个难题。
最早提出抽象这个概念的是
达芬奇
在他的名画中有着抽象的充分演示。
如果在一个项目中做到抽象编程的话,无疑是完美的。那么在编译型的语言中如果做到呢?
首先搭建环境,这个问题怎么说呢?真是个见仁见智的。
在C语言中和在JAVA又或者在Python中如何搭建这个抽象的环境。
由于笔者最近热衷于Python的开发。首先谈谈在Python中如何做到把大象抽出来的同时保证程序的完美的可移植性。
第一
建立一个抽象类库。
打开IDLE,引入抽象的概念。
第二
告诉大象我们即将把你抽出来。这个对于大象来说是很不公平的,它肯定的回答NO
那么我们是不是就不能把大象抽出来了呢?当然可以。大象是很笨的,我们可以先构造一个函数。内容包括香蕉芒果等大象爱吃的食物,先把大象“骗”出来。当然这个也是很有技巧的。骗出来以后大象暂时存在什么地方呢?众所周知Python讲究效率、快捷的开发注重的是解决问题。那么,我们到哪里去找个那么大的空间把大象存进去呢?答案当然是动物园啦。首先与管理员协调暂存事宜。待需要的时候在把大象引入回来。
第三
大象的引入问题
这个时候相信大家对把大象存在什么位置已经有了个初步的了解,但是如果管理员很热爱大象的话,给大象提供的伙食比我们先前的要好。那么这个时候引入无疑会增加成本。必须提供更好的伙食条件大象才有可能原因再次回来我们预先的架构中继续工作。那么在作者的BLOG中有着一套比较完整的解决方案。下面的参考地址会给出作者的Blog地址。请大家争相传阅。
总结:抽象编程的原理大家都清楚了。需要解决的主要问题就是把大象抽出后的再次引用问题。这个也是本文的难点。希望对大家有所帮助。
抽象是计算机科学中最为重要的概念之一。比如我们为一组函数规定一个简单的应用程序接口(API)就是一个很好的编程习惯,程序员无需了解它内部的工作便可以使用这些代码。不同的编程语言提供不同形式和等级的抽象支持,例如Java类的声明和C语言的函数原型。如下图,在处理器里,指令集架构提供了对实际处理器硬件的抽象。使用这个抽象,机器代码表现得几号箱运行在一个依稀执行一条指令的处理器上。底层的已经远比抽象描述的要复杂惊喜,它并行的执行多条指令,但又总是与那个简单有序的模型保持一致。只要执行的模型一样,不同的处理器实现也能执行同样的机器代码,而有提供不同的开销和性能。
文件:对I/O设备的抽象
虚拟内存:对程序存储器的抽象
进程:对一个正在运行的程序的抽象
虚拟机:对整个计算机的抽象,包括 *** 作系统,处理器和程序
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)