抽象数据类型与C++

类是一种新的数据类型,类似于数据结构,只是它拥有数据结构所没有的部分——“成员函数”,正是因为它所拥有的成员函数这一特性,使得它能隐藏“数据结构”(类)中的数据,不被用户所知道。通过类中的成员函数,使得类的实现与连接都是通过成员函数来进行实现的。接下来我们通过一个实例来对这一概念进行论述:

实例:节流阀类:throttle

  对于节流阀,想必大家都比较熟悉,就通过移动控制杆来进行控制液体的流入流出,即为控制流量,所以控制杆所在的位置与通过节流阀的流量便存在一个相关性。通过控制控制杆的位置从而便可以控制通过节流阀的流量,假设节流阀有10个位置,当在位置10时便是流量最大时,0时便是流量为零时。所以根据节流阀的特点,我们可以列出这样一些特点:

1、当前的位置:position

2、当前的流量:flow(根据相关性,使用最大流量与当前流量的比来代表,即最大流量的位置与当前位置的比)

3、节流阀当前是否关闭:is_no

4、移动控制杆到什么位置:shift

5、将节流阀进行关闭 shut_off

所以我们便可以建立一个throttle类了:

class throttle{
    public:
      void shut_off();//初始化当前位置,对节流阀进行关闭操作
      void shift(int amount);//输入节流阀的移动位置
      double flow() const;//输出最大位置与当前位置的比值

      bool is_no() const;//判断是否开启状态
    private:
      int position;
};

从而根据提供的成员函数,我们进行对成员函数的具体实现进行编写:

void throttle::shut_off(){
  position=0;
}

void throttle::shift(int amount){
  position+=amount;
  if(position<0){
    position=0;
  }else if(position>10){
    position=10;
  }
}

double throttle::flow()const {
  return position/10.0;
}

bool throttle::is_no()const{
  return (flow()>0);
}

这是我们便可以进行具体情况具体分析使用这个类了;假如有一个游泳池,现在需要通过这个节流阀进行放水,在放水的过程中每次一小时节流阀的位置变化一位,这时要求求出给定一个位置量,输出它的每小时的流量大小?

int main()
{
  throttle sample;
  int user_input;
  cout<<"I have a throttle with 10 position."<<endl;
  cout<<"Where would you like to set the throttle?"<<endl;
  cout<<"Please type a number 0 to 10.";
  cin>>user_input;
  sample.shut_off();
  sample.shift(user_input);

  while(sample.is_no()){
    cout<<"The flow is now "<<sample.flow()<<endl;
    sample.shift(-1);
  }
  cout<<"The flow is now off"<<endl;
  return EXIT_SUCCESS;

}

结果如下:

原文地址:https://www.cnblogs.com/Justina/p/11230987.html

时间: 2025-01-15 20:18:48

抽象数据类型与C++的相关文章

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

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

数据类型和抽象数据类型

<(^-^)> 我们知道在各种编程语言中都会有数据类型. 一.数据类型 先看看为什么会有不同的数据类型呢?很简单,很多东西不能一概而论,而是需要更精确的划分.计算机计算1+1并不需要多么大的空间,但是计算10000000000+1000000000就得需要有个比较大的空间来放.还有有时候会计算小数,小数的位数不一样,需要的空间也就不一样.数字1和字母a也需要区分啊,于是开发者就想出了“数据类型”这一招,用来描述不同的数据的集合. 我记得最早接触的数据类型就是int了.当初一个int a;就把我

计算机软考笔记之《抽象数据类型(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

线性表的抽象数据类型描述

代码如下 1 //抽象数据类型线性表的定义 2 #include <studio.h> 3 /*-------------------初始化线性表-----------------------*/ 4 void InitList(SqList *&L) 5 { 6 L=(SqList*)malloc(sizeof(SqList)); 7 L->length=0; 8 } 9 /*--------------------销毁线性表,释放内存空间-------------------

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

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

ADT(Abstract Data Type)抽象数据类型

ADT(Abstract Data Type)抽象数据类型 为了便于理解,以复数为例: (1)定义: ADT Complex{ 数据对象:D={e1,e2|e1,e2为实数} 数据关系:S={<e1,e2>|e1是实部,e2是虚部} 基本操作: Creat(&C , x, y) GetReal(C) GetImage(C) Add(c1,c2) Sub(C1,C2) } ADT Complex; (2)表示: typedef struct{ float Realpart; float

算法(第4版)-1.2.4 更多抽象数据类型的实现

总结:本小节列举了更多抽象数据类型的实现,并讨论了维护多个实现的问题. 重点: 1. 本书中反复出现的一个主题就是我们需要理解各种实现对空间和时间的需求以及它们对各种用例的适用性. 2. 本书的一个主要目标就是深入讨论若干种基本抽象数据结构的实现并衡量他们的性能的不同. 3. 编译时出现 -Xlint:deprecation 警告时,可以不用理会,直接运行程序即可.