————————————————————————————————————————————————————————————————————————————
数据类型
数据类型是一个值的集合和定义在这个值集上的一组操作的总称(抽象数据类型和数据类型实质上是一个概念)。例如:C/C++中 int a = 2 定义了 int 的取值范围和操作(加减乘除等)。
按照值分类:原子类型和结构类型。
————————————————————————————————————————————————————————————————————————————
抽象数据类型
“抽象”的意义在于数学类型的数据抽象性引用来自数据结构基于C++模版类的实现。
例如:整形数据是一个抽象数据类型,虽然不同语言(或处理器等,底层的。。。我短板)实现方法可以不同,但是定义的数学特性相同,在用户看来就是相同的。
抽象数据类型的描述
抽象数据类型的描述可以用(D,S,P)三元组表示。D(Data),S(Set),P(Process)。其中:D是数据对象,S是D上的关系,P是对D的基本操作集。
ADT 抽象数据类型名
{
数据对象 {数据对象的定义}//1
数据关系 {数据关系的定义}//2
基本操作 {基本操作的定义}//3
}ADT 抽象数据类型名
1和2用集合描述,3定义格式:返回值类型 基本操作名 (参数表);int Add(int a, int b)
3中注意:&引用开头的[参考](https://blog.csdn.net/ASJBFJSB/article/details/82077661)
抽象数据类型定义例如:
ADT Complex{
数据对象 D = {e1,e2 | e1,e2∈RealSet}
数据关系 R1 = {<e1,e2> | e1复数的实属部分,e2复数的虚数部分}
基本操作
Initcomplex(&z,v1,v2)
操作结果:构造复数z,其实部和虚部为v1,v2的值
DestroyComplex(&z)
操作结果:复数z被销毁
}ADT Complex
抽象数据类型的特征
抽象:
封装:
继承:
多态:
抽象数据类型的实现
实现方法:
1)传统面向过程设计方(简写为POP).
“面向过程”(Procedure Oriented)是一种以过程为中心的编程思想。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。例如:C语言。
2)“包”、“模型”的设计方法
3)面向对象的程序设计(Object-Oriented Programming,简记为OOP)
OO方法(Object-Oriented Method,面向对象方法,面向对象的方法)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,简称OO (Object-Oriented)方法,是建立在"对象"概念基础上的方法学。
面向对象(c++,c#,java,delphi)
抽象数据类型与C++中的类对应关系
抽象数据类型<——>类
数据对象 <——>数据成员(属性)
基本操作 <——>成员函数(方法)
类的声明
class Complex{
protected:
double realpart;
double imagpart;
public:
Complex();
Complex(double realVal,double imagVal);
Complex(complex & z){assign(z)};
~Complex();
void assign(Complex& z);
double getReal(void) const {return realpart;}
double getImag(void) const {return imagpart;}
friend Complex add(Complex & z1,Complex & z2);
}
类的实现
Comlplex::Complex(double realVal,double imagVal)
{
realpart = realVal;
imagpart = imagVal;
}
void Complex::assign(Complex & z)
{
realpart = z.realVal;
imagpart = z.imagVal;
}
Complex add(Complex & z1, Complex& z2)
{
Complex sum(z1);
sum.realpart = z2.realVal;
sum.imagepart =z2.imagVal;
return sum;
}