精华内容
下载资源
问答
  • 定义抽象数据类型

    2017-11-07 21:23:00
    对于抽象数据类型来说,我们通过它的接口来使用它的对象而不知道这个类有哪些数据成员。与之相反,若一个类允许他的用户直接访问他的数据成员,并且要求由用户来编写操作,则这个类不是一个抽象数据类型。 设计...

        更多类的基本概念

        对于抽象数据类型来说,我们通过它的接口来使用它的对象而不知道这个类有哪些数据成员。与之相反,若一个类允许他的用户直接访问他的数据成员,并且要求由用户来编写操作,则这个类不是一个抽象数据类型。

     

    设计类

        类的接口包括用户所能执行的操作;类的实现则包括类的数据成员、负责接口实现的函数体以及定义类所需的各种私有函数。

     

     

    定义类

        定义成员函数:

        定义和声明成员函数的方式与普通函数差不多。成员函数的声明必须在类的内部,他的定义则既可以在类的内部也可以在类的外部。类外部定义的成员的名字必须包含它所属的类名。

        定义在类内部的函数是隐式的inline函数。

        引入this:

        当我们调用一个成员函数时,用请求该函数的对象的地址初始化this。

        在成员函数内部我们可以直接使用调用该函数的对象的成员,而无须通过访问运算符做到这一点,因为this所指的正是这个对象。任何对类成员的直接访问都被看作this的隐式引用。

        因为this的目的是总是指向“这个”对象,所以this是个常量指针,不允许改变this中保存的地址。

           引入const成员函数:

        紧随参数列表之后的const关键字的作用是修改隐式this指针的类型。

        默认情况下,this的类型是指向类类型非常量版本的常量指针。因为this需要遵循初始化规则,所以(在默认情况下)不能把this绑定到一个常量对象上。这一情况使得我们不能在一个常量对象上调用普通的成员函数。

        如果一个函数不会改变this所指的对象,则把它设置为指向常量的指针有助于提高函数的灵活性。

        紧跟在参数列表后面的const表示this是一个指向常量的指针。像这样使用const的成员函数被称为常量成员函数。常量成员不能改变调用它的对象的内容。常量对象,以及常量对象的引用或指针都只能调用常量成员函数。

        类作用域和成员函数:

        类本身就是一个作用域。

        编译器分2步处理类:首先编译成员的声明,然后才轮到成员函数体。因此,成员函数体可以随意使用类中的其他成员而无须在意这些成员出现的次序。

        定义一个返回this对象的函数:

        在设计类似复合赋值运算符+=时,函数最后“return *this;"。

        一般来说,当我们定义的函数类似于某个内置运算符时,应该令该函数的行为尽量模仿这个运算符。

     

     

    定义类相关的非成员函数

        一般来说,如果非成员函数是类接口的组成部分,则这些函数的声明应该与类在同一个头文件内。

     

     

    构造函数

        每个类都分别定义了他的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数。构造函数的任务是初始化类对象的数据成员,无论何时只要类的对象被创建,就会执行构造函数。

        构造函数的名字和类名相同。和其他函数不一样的是,构造函数没有返回类型;除此之外类似于其他函数,构造函数也有一个(可能为空的)参数列表和一个(可能为空的)函数体。类可以包含多个构造函数,和其他重载函数差不多,不同的构造函数之间必须在参数数量或参数类型上有所区别。

        不同于其他成员函数,构造函数不能被声明为const的。当我们创建一个const对象时,直到构造函数完成初始化过程,对象才能真正取得其“常量”属性。因此,构造函数在const对象的构造过程中可以向其写值。

        合成的默认构造函数

        类通过一个特殊的构造函数来控制默认初始化过程,这个函数叫做默认构造函数。默认构造函数无须任何实参。(明确一点,如果一个构造函数不接受任何实参,则它是一个默认构造函数)

        如果我们的类没有显示的定义构造函数,那么编译器就会为我们隐式地定义一个默认构造函数。编译器创建的构造函数又被称为合成的默认构造函数。对于大多数类来说,这个合成的默认构造函数将按照如下规则初始化类的数据成员:

        ·如果存在类内的初始值,用它来初始化成员。

        ·否则,默认初始化该成员。

        (默认构造函数包括自定义的和合成的默认构造函数)

        某些类不能依赖于合成默认构造函数

        合成的默认构造函数只适用于非常简单的类。对于一个普通的类来说,必须定义它自己的默认构造函数。原因有三:

        ·只有当类没有声明任何构造函数时,编译器才会自动地生成默认构造函数。也就是说如果我们定义了一些非默认构造函数,除非再定义一个默认构造函数,否则该类没有默认构造函数。

        ·对于某些类来说,合成的默认构造函数可能执行错误的操作。如果类包含有内置类型或者复合类型的成员,则只有当这些成员全都被赋予了类内初始值时,这个类才适合于使用合成的默认构造函数。否则,用户在创建类的对象时就可能得到未定义的值。

        ·有时候编译器不能为某些类合成默认的构造函数。例如,如果类中包含一个其他类类型的成员且这个成员的类型没有默认构造函数,那么编译器将无法初始化该成员。

        =default的含义

        在参数列表后写上=default来要求编译器生成构造函数。

        其中,=default既可以和声明一起出现在类内部,也可以作为定义出现在类的外部。和其他函数一样,如果=default在类的内部,则默认构造函数是内联的;如果它在类的外部,则该成员默认情况下不是内联的。

        我们定义这个构造函数的目的仅仅是因为我们既需要其他形式的构造函数,也需要默认的构造函数。我们希望这个函数的作用完全等同于之前使用的合成默认构造函数。

        构造函数初始值列表

        如果编译器不支持类内初始值,那么默认构造函数应该使用构造函数初始值列表来初始化类的每个成员。

        Sales_data(const std::string &s): bookNo(s){ }

        冒号及冒号和花括号之间的代码是构造函数初始化列表,它负责为新创建的对象的一个或几个数据成员赋初值。构造函数初始值是成员名字的一个列表,每个名字后面紧跟括号括起来的(或者在花括号内的)成员初始值。不同成员的初始值通过逗号分隔开来。

        通常情况下,构造函数使用类内初始值不失为一种好的选择。构造函数不应该轻易覆盖掉类内的初始值,除非新赋的值与原值不同。(初始值列表忽略某个数据成员而且该数据成员也没有类内初始值,那么就会执行默认初始化,若是内置类型,就会在创建对象时得到未定义的值)

        函数体为空的情况:因这些构造函数的唯一目的就是为数据成员赋初值,一旦没有其他任务需要执行,函数体也就为空了。

        当某个数据成员被构造函数初始值列表忽略时,它将以与合成默认构造函数相同的方法隐式初始化。也就是说,没有出现在构造函数初始值列表中的成员将通过相应的类内初始值(如果存在的话)初始化,或者执行默认初始化。 

     

     

    拷贝、赋值和析构

        尽管编译器能替我们合成拷贝、赋值和销毁操作,但是必须要清楚的一点是,对于某些类来说合成的版本无法正常工作。在学习关于如何自定义操作之前,类中所有分配的资源都应该直接以类的数据成员的形式存储。

    转载于:https://www.cnblogs.com/mu-ye/p/7795663.html

    展开全文
  • 数据结构之抽象数据类型

    千次阅读 2019-05-12 22:28:09
    抽象数据类型(ADT)概念 以面向对象编程为例,在创建一个对象的时候,要给定这个对象有哪些属性以及行为,并且可以通过一套接口描述说明这个对象用来干什么的,在给定输入的时候,产生相应的结果,并不需要知道其...
    • 抽象数据类型(ADT)概念
      • 以面向对象编程为例,在创建一个对象的时候,要给定这个对象有哪些属性以及行为,并且可以通过一套接口描述说明这个对象用来干什么的,在给定输入的时候,产生相应的结果,并不需要知道其内部实现的具体细节。其基本思想是,把数据定义为抽象的对象集合,并赋予它们合法操作,同时,不暴露其数据的表示细节和操作的实现细节。

      • 通常对数据类型的操作可以分为三类
        • 构造操作:依据已知的一些信息,产生出这种类型的新对象。例如Python中的内置函数str(),通过str(1),将int对象产生出为str对象。
        • 解析操作:通过已知对象的特性,取出想要的结果,其结果反映了被解析对象的操作特性。如下:表示object是取分数的分子和分母。

        • 变动操作:这类操作用来修改对象的内部状态。

      • ADT是一种思想,更是一种组织程序的技术,主要有,①围绕一类数据定义程序模块;②模块的接口和实现分离;③实例化的时候,以合理的机制实现具体的数据表示和操作。以下图为例,首先是定义TCP/serial通信(Python描述)的相关数据,接下来就是把这个类型具体化。详情请见https://github.com/simonlzw/Data-Structures-and-Algorithms/blob/master/DataStructuresAndAlgorithms/AbstractionToInstantiation.py

    • Python中的类
      • 在上面我们使用了Python来描述类,并且实现了抽象类的定义与类的实例化,其中我们用到了class这个关键字,没错,这就是Python中的一种技术,利用class定义实现抽象数据类型,这个定义好的类就可以类比为系统内部类型,通过实例化,就可以产生该类型的对象。实际上,Python把内置类型都看作类。
      • class是类定义的关键字,class后面是给定的类名,其中object是AbstractDriver的父类,AbstractDriver继承自object,object是几乎python全部对象的父类,相当于树的根节点一样。
        class AbstractDriver(object): ​def __init__(self, publisher=None): self.publisher = publisher def log(self, msg): print_with_time(msg) if isinstance(self.publisher, ZmqPublisher): self.publisher.publish(msg)@abstractmethod def open(self): pass
      • 类体里面一般包括两个部分:属性和方法。其属性一般定义在__init__里面,方便在函数里调用。这里的__init__方法称作初始化方法,其目的是构造本类的新对象。在实例化一个对象时(ex:tcp_c = AbstractDriver())时,系统会自动对这个对象执行__init__方法。其中self.publisher = publisher,self.publisher表示该类的实例对象的属性,publisher表示传入的参数。
      • 私有变量:在类的定义中,以下划线_开头的属性名或者函数名都当作内部使用的名字,另外,以两个下划线__开头的名字不能在类定义之外用这个名字访问。
      • 静态方法:在函数定义的头部行之前加修饰符,静态方法的参数表中不应该有self参数,因此,调用静态方法的时候其参数表的形参都要接受外部传来的实参,这里是没有自动使用的self参数。本质上说,静态方法就是在类里面定义的普通函数,但也是该类的局部函数。
        @staticmethoddef create_cmd(cmd): if "[11]" not in cmd: cmd = "[11]" + cmd if "\r\n" not in cmd: cmd = "{}\r\n".format(cmd) return cmd
      • 类方法:在其定义行前加修饰符@classmethod,定以的这种方法必须有一个cls参数,在类方法执行时,调用它的类将自动约束到方法的cls参数,通常用类方法实现与本类的所有对象有关的操作。
        @classmethoddef create(cls, zmq_context, endpoint, polling_milliseconds=0): socket = zmq_context.socket(zmq.ROUTER) socket.bind(endpoint) return cls(socket, polling_milliseconds)
      • python中提供了一个内置函数isinstance,专门用于检查类和对象的关系,例如isinstance(obj,cls)检查obj是否为cls类的实例,若是,返回True,否则返回false。
      • 继承、基类和派生类:在定义一个新的类时,可以列出一个或者几个已有的类作为被继承类,这样就建立了新定义类与指定已有类之间的继承关系,通过继承定义出来的新类就被称为已有类的派生类(或称子类),被继承类就称为派生类的基类(即父类)。Python 中表达式issubclass (cls1,cls2)可用来检查cls1和cls2是否有继承关系,是就返回True,否则返回false。
      • 标准函数super(),用在派生类的方法定义里,它要求从这个类的直接基类开始做属性检索,而不是从这个类本身开始插找。
      • python异常处理,程序运行中发生的每个异常都有特定的名字,如valueerror、TypeError、ZeroDivisionError等,通常可以用try...except机制去处理异常
    • 类定义实例:人事管理系统中的类
      • 问题分析与设计
        • 以一个公司的人事管理系统为例,将公司人员按职能分为两类:工程类(研发,测试,维护等)以及非工程类(人事,行政,财务等等);分析这两类人员都需要记录有用的信息,这两类人员都有共通性,也有各自的特殊情况:
          • 首先:作为公司职员,都应该具有:姓名,年龄,性别,工号,职位等公共信息。
          • 作为工程类人员,应该有所属工程部,项目记录,项目起始时间等。
          • 作为非工程人员,应该有考勤,培训,报销等信息。
      • 方案设计
        • 首先是基本员工信息ADT设计,即给定职员(Staff),如下属性:姓名(name),性别(sex),年龄(age),工号(number),职位(position),同时所有员工还具有入职与离职的动作,由次可以给定如下抽象数据类型定义:

        • 然后是工程人员ADT设计,属性是项目绩效(project_bonus),做的项目(project_number),同时有开发软件(develop)的动作,如下所示

        • 最后是非工程人员ADT设计,属性基本ADT已经包含了,故只需要考虑其动作,主要有记录考勤(record_attendance),记录会议(record_meeting),财务核算(financial_accounting)等,如下所示

      • 代码调试以及DEBUG:本实例主要以理解抽象概念,明白什么是ADT,以及ADT的实例化,理解什么是继承以及派生类。
    • 总结
      • 抽象数据类型的基本思想是抽象定义与数据表示和数据操作的实现分离。
      • 定义抽象数据类型实质就是通过一组操作实现对象与外部的接口调用。
      • python的类机制中,被继承的类被称为基类,继承的类称为派生类,如果在新类的定义时不指明基类,python会自动认为其基类是object。在类定义的层次结构中,最高层的类是object,其他类都是object的派生类。
    展开全文
  • 数据结构、数据类型和抽象数据类型,这三个术语在字面上既不同又相近,反映出它们在含义上既区别又联系。 数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据...

        数据结构、数据类型和抽象数据类型,这三个术语在字面上既不同又相近,反映出它们在含义上既有区别又有联系。
        数据结构是在整个计算机科学与技术领域上广泛被使用的术语。它用来反映一个数据的内部构成,即一个数据由哪些成分数据构成,以什么方式构成,呈什么结构。数据结构有逻辑上的数据结构和物理上的数据结构之分。逻辑上的数据结构反映成分数据之间的逻辑关系,物理上的数据结构反映成分数据在计算机内的存储安排。数据结构是数据存在的形式。
        数据是按照数据结构分类的,具有相同数据结构的数据属同一类。同一类数据的全体称为一个数据类型。在程序设计高级语言中,数据类型用来说明一个数据在数据分类中的归属。它是数据的一种属性。这个属性限定了该数据的变化范围。为了解题的需要,根据数据结构的种类,高级语言定义了一系列的数据类型。不同的高级语言所定义的数据类型不尽相同。Pascal语言所定义的数据类型的种类如图1-8所示

     

     

     

        其中,简单数据类型对应于简单的数据结构;构造数据类型对应于复杂的数据结构;在复杂的数据结构里,允许成分数据本身具有复杂的数据结构,因而,构造数据类型允许复合嵌套;指针类型对应于数据结构中成分数据之间的关系,表面上属简单数据类型,实际上都指向复杂的成分数据即构造数据类型中的数据,因此这里没有把它划入简单数据类型,也没有划入构造数据类型,而单独划出一类。
        数据结构反映数据内部的构成方式,它常常用一个结构图来描述:数据中的每一项成分数据被看作一个结点,并用方框或圆圈表示,成分数据之间的关系用相应的结点之间带箭号的连线表示。如果成分数据本身又有它自身的结构,则结构出现嵌套。这里嵌套还允许是递归的嵌套。
        由于指针数据的引入,使构造各种复杂的数据结构成为可能。按数据结构中的成分数据之间的关系,数据结构有线性与非线性之分。在非线性数据结构中又有层次与网状之分。由于数据类型是按照数据结构划分的,因此,一类数据结构对应着一种数据类型。数据类型按照该类型中的数据所呈现的结构也有线性与非线性之分,层次与网状之分。一个数据变量,在高级语言中的类型说明必须是读变量所具有的数据结构所对应的数据类型。
        最常用的数据结构是数组结构和记录结构。数组结构的特点是:
        成分数据的个数固定,它们之间的逻辑关系由成分数据的序号(或叫数组的下标)来体现。这些成分数据按照序号的先后顺序一个挨一个地排列起来。
    每一个成分数据具有相同的结构(可以是简单结构,也可以是复杂结构),因而属于同一个数据类型(相应地是简单数据类型或构造数据类型)。这种同一的数据类型称为基类型。
    所有的成分数据被依序安排在一片连续的存储单元中。
    概括起来,数组结构是一个线性的、均匀的、其成分数据可随机访问的结构。由于这种结构有这些良好的特性,所以最常被人们所采用。在高级语言中,与数组结构相对应的数据类型是数组类型,即数组结构的数据变量必须说明为array [i] of T0 ,其中i是数组结构的下标类型,而T0是数组结构的基类型。
        记录结构是另一种常用的数据结构。它的特点是:
        与数组结构一样,成分数据的个数固定。但成分数据之间没有自然序,它们处于平等地位。每一个成分数据被称为一个域并赋予域名。不同的域有不同的域名。
    不同的域允许有不同的结构,因而允许属于不同的数据类型。
    与数组结构一样,它们可以随机访问,但访问的途径靠的是域名。
    在高级语言中记录结构对应的数据类型是记录类型。记录结构的数据的变量必须说明为记录类型。
        抽象数据类型的含义在上一段已作了专门叙述。它可理解为数据类型的进一步抽象。即把数据类型和数据类型上的运算捆在一起,进行封装。引入抽象数据类型的目的是把数据类型的表示和数据类型上运算的实现与这些数据类型和运算在程序中的引用隔开,使它们相互独立。对于抽象数据类型的描述,除了必须描述它的数据结构外,还必须描述定义在它上面的运算(过程或函数)。抽象数据类型上定义的过程和函数以该抽象数据类型的数据所应具有的数据结构为基础。

    展开全文
  • 记录学生信息的数据结构设计 》列表包元组 》列表包字典 》字典包字典 比较数据结构的取值效率 ...抽象数据类型 》先定义好数据结构 》然后定义这个结构有哪些操作 具体的操作代码可以先不写的 》例子 ...

    记录学生信息的数据结构设计

    在这里插入图片描述

    》列表包元组

    在这里插入图片描述

    》列表包字典

    在这里插入图片描述

    》字典包字典

    在这里插入图片描述

    比较数据结构的取值效率

    如果要找一个学生,关注时间复杂度

    》 n

    在这里插入图片描述

    》1

    在这里插入图片描述

    数据结构

    解决数据如何保存

    保存方式不同,使用效率不同

    在这里插入图片描述

    数据

    在这里插入图片描述

    算法与数据结构,区别

    在这里插入图片描述

    抽象数据类型

    在这里插入图片描述

    》先定义好数据结构

    》然后定义这个结构有哪些操作

    具体的操作代码可以先不写的

    》例子

    在这里插入图片描述

    展开全文
  • 第一章 抽象数据类型

    2014-03-27 00:49:00
    程序员很少关心哪些是有效的,编程语言中通常会提供一些列的方法从已类型中构建新的数据类型。最简单的方法就是聚合,例如数组、结构体或者联合体。指针,根据C.A.R Hoare的说法“a step from which we may never ...
  • 1 映射类关系Python 的 collections.abc 模块内拥有 Mapping 和 MutableMapping 这两个抽象基类,它们为 dict 和其他类似的类型提供了接口定义。mutable /ˈmjuːtəbl/ adj. Capable of or subject to change or ...
  • 抽象数据型(ADT)

    2021-06-09 23:38:21
    抽象数据类型(Abstract Data Type,ADT)是将数据对象、数据对象之间的关系和数据对象的基本操作封装在一起的一种表达方式,它和工程中的应用是一致的。 在工程项目中,开始编程之前,首先列出程序需要完成的功能...
  • 今天我们就针对于常见的几个图表类型来为大家做简单介绍,如此就能够更好的帮助我们进行数据分析,实现一些抽象化思维的完美转换。 大家都听过“数据可视化”,也知道要用直观的图表让受众理解复杂多变的数据。但...
  • 数据特征的抽象,是数据库管理的教学形式框架。数据库系统中用以提供信息表示和操作手段的形式构架。数据模型包括数据库数据的结构部分、数据库数据的操作部分和数据库数据的约束条件。 1)数据结构:数据模型中的...
  • Python语言中数字类型有哪些?现在看小编来总结。1、数字类型概述数字是自然界计数活动的抽象,更是数学运算和推理表示的基础。计算机对数字的识别和处理有两个基本要求:确定性和高效性。确定性指程序能够正确且无...
  • JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? JDK提供的流继承了四大类: InputStream(字节输入流) , OutputStream (字节输出 流) , Reader (字符输入流) , Writer (字符输出流). 按流向...
  • 如果一些其他事件试图访问这个房间,而事件 #1 在那里,这些事件会形成一个队列,将它们的请求数据放在一个公共保管库中,获取它们的唯一 ID 并开始以一定的时间间隔敲门。 当事件#1 退出并且
  • 这些可以满足大部分需求,更复杂的抽象数据类型亦可通过它们来组成。 1. 数据存储 计算机存储的最小单位是bit,它表示0或1。而计算机可寻址的最小单位是byte,它至少由8个bit组成,内存就是由许多个byte组成并...
  • JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类? Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,...
  • 流,是指一连串流动的字符,是以先进先出的方式发送和接收数据的通道。 当先一个流写入数据时,这个流被称为输出流,输出流可以将信息送往程序的外部,如硬盘上的文件、打印机上的文件等。 输出流:只能从中读取...
  • Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的流均是由它们派生出来...
  • 一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。 字节流----字节输入流:InputStream,字节输出流:OutputStream 字符流----字符输入流:Reader,字符输出流:Writer ...
  • 准备学习下数据结构,用的严蔚敏的书2009版,先了解数据结构的定义及作用及数据和抽象数据类型,然后学习线性表(链表)、栈、队列、串、数组、广义表、树、二叉树、红黑树、图、哈希表等。时间整理个脑图吧。 ...
  • C# 都有哪些数据类型呢,前面几次学习里我们已经遇到过的几种数据类型有: string 字符串类型 double 双精度类型 抽象类型 即Class类型,具体的某个类 在 C# 中,变量分为以下几种类型: 值类型(Value types) ...
  • java中有哪些数据类型? 一、什么是数据类型程序设计是对现实世界的抽象。程序=数据+算法。数据有很多种,数字,文字,图片,音频,视频等等,都是数据。程序就是用相应的逻辑对这些数据做处理。数据类型描述了一类...
  • Java中的流分为两种,一种是字节流,另一种是字符流,分别由四个抽象类来表示(每种流包括输入和输出两种所以一共四个):InputStream,OutputStream,Reader,Writer。Java中其他多种多样变化的流均是由它们派生出来...
  • 数据类型基本概念

    千次阅读 2008-07-07 15:33:00
    我们的重点是了解在计算机编程世界中,有哪些基本的数据类型?在人类世界里,数据类型那就多了,把人类的对万物划分类型的方法照搬入计算机世界,显然不可能。怎么办呢?方法就是:抽象。计算机先哲们为我们做了这...
  • 字节流,字符流。字节流继承于InputStream OutputStream,...要把一片二进制数据数据逐一输出到某个设备中,或者从某个设备中逐一读取一片二进制数据,不管输入输出设备是什么,我们要用统一的方式来完成这些操作...
  • 1. 队列的定义是什么? 答:队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 2. 队列有哪些性质? 答:队列是一种先进先出的...4. 队列的抽象数据类型有哪些? 答:(1)初始化操作,建
  • Q1:Java的数据类型有哪些? Q2:访问权限修饰符 public、private、protected, 以及不写(默认)时的区别? Java中成员的访问权限共有四种,可见性如下: Q3:接口和抽象类有什么区别? 实现: 抽象类的子类...
  • 对于面向对象编程语言你了解多少呢?面向对象语言哪几种你都了解吗?...2、c++C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还...
  • 数据类型和数据抽象 控制流和控制的抽象 低层次的抽象 特定领域的补充和抽象 我们能够掌握所有编程语言的原因是:语言的概念是有限的,下面列举出 15 个常用概念。 程序 面向对象 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 556
精华内容 222
关键字:

抽象数据类型有哪些