C++是个多范式的语言,所以C++难学,所以C++强大,可比起java,C#,用C++来做软件开发,开发周期要长很多。
为什么呢?这是因为C++的自由度高,换句话说自由度越高地语言,开发软件的周期越长,这是有一定道理的
自由度过高就不容易掌控,java和C#它们的库很强大,这在一定程度上就限制了自由度,相当于提供了一套模式,方法,开发人员不需要去为实现这些东西而操心
然而C++程序员却需要为这些费劲心力,这体现在实现细节上。
本文要说的是抽象数据类型,抽象数据类型 ADT
一种重要的数据类型.它是由一组对象和一组在这些对象上的操作所组成,利用数据抽象机制把一个数据类型的表示和操作汇集起来,封装在一起,定义成一个新的数据类型,这种新的数据类型统称为抽象数据类型
这是工具书上给出的定义。
首先是一种类型
其次是对象以及操作这些对象的集合
C++中得类就是对数据和操作的封装,也就是所谓的抽象数据类型
那么如何去定义一个抽象数据类型呢?这想必是所有开发者所苦恼的问题,也同样是本人苦恼的问题。
这里来谈谈本人对于这个问题的理解!
抽象这个词在国语中得解释是:概括,大概。比如说读完一本书之后,大概描述一下书中的主体内容思想。这称之为抽象。抽象就是抓住本质,根本,同样地,不变的等等
我们把同类事物的根本的,本质的,相同的,不变的概括出来就叫抽象,C++的抽象也同样是这样。
那么也就是将一类事物相同的属性,行为概括出来,然后封装在一起形成的一个类,就是所谓的抽象数据类型。
上面解释了抽象和C++抽象的关系,下面就来探讨下定义一个抽象数据类型的依据。
抽象数据类型并不是凭空想出来的,就算能想出来,恐怕也不尽人意,定义一个抽象数据类型的依据是:它能做什么?
做软件开发,都会先进行需求分析,然后系统设计,划分功能模块 ==
如何去完成一个模块?当然可以更细分一下,每个模块所要实现的功能有哪些。
这个时候问题就来了,如何去实现这些功能呢?
好,这就回到了上面提出的问题:定义一个抽象数据类型的依据
依据就是:能做什么。
也就是为了完成模块所需要的功能所以才定义相应的抽象数据类型,具体就是根据模块的功能需求来定义抽象数据类型,利用抽象数据类型的操作来实现模块的功能。
总结:抽象数据类型是基于模块要实现的功能,同时用来实现模块的功能的