C++ 数据结构(二抽象数据类型)

————————————————————————————————————————————————————————————————————————————

数据类型

数据类型是一个值的集合和定义在这个值集上的一组操作的总称(抽象数据类型和数据类型实质上是一个概念)。例如:C/C++中 int a = 2 定义了 int 的取值范围和操作(加减乘除等)。
按照值分类:原子类型和结构类型。

————————————————————————————————————————————————————————————————————————————

抽象数据类型

“抽象”的意义在于数学类型的数据抽象性引用来自数据结构基于C++模版类的实现
例如:整形数据是一个抽象数据类型,虽然不同语言(或处理器等,底层的。。。我短板)实现方法可以不同,但是定义的数学特性相同,在用户看来就是相同的。

抽象数据类型的描述

抽象数据类型的描述可以用(D,S,P)三元组表示。D(Data),S(Set),P(Process)。其中:D是数据对象,S是D上的关系,P是对D的基本操作集。

ADT 抽象数据类型名
{
	数据对象 {数据对象的定义}//1
	数据关系 {数据关系的定义}//2
	基本操作 {基本操作的定义}//3ADT 抽象数据类型名
12用集合描述,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;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Echo一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值