Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何区分数据结构和抽象数据类型?_C++_Data Structures_Computer Science_Abstract Data Type - Fatal编程技术网

C++ 如何区分数据结构和抽象数据类型?

C++ 如何区分数据结构和抽象数据类型?,c++,data-structures,computer-science,abstract-data-type,C++,Data Structures,Computer Science,Abstract Data Type,Dale和Walker的抽象数据类型(1996)中的以下定义: 数据结构:结构化关系的实现 ADTs(抽象数据类型):逻辑行为为 由一组值和一组操作定义 >让我们在C++中使用一个简单的类: class Simple { public: void some_simple_action(); private: int x, y; }; Simple必须是一个数据结构,因为它是一个实现,对吗?关于这个类,它的抽象数据类型是什么 第二,我是否正确地推测ADT只是某

Dale和Walker的抽象数据类型(1996)中的以下定义:

数据结构:结构化关系的实现

ADTs(抽象数据类型):逻辑行为为 由一组值和一组操作定义

>让我们在C++中使用一个简单的类:

class Simple {
public:
        void some_simple_action();

private:
        int x, y;
};
Simple必须是一个数据结构,因为它是一个实现,对吗?关于这个类,它的抽象数据类型是什么

第二,我是否正确地推测ADT只是某个事物的概念表示:比如我们可以通过名称来称呼某个事物的概念?例如,堆栈是什么有一个共同的想法,甚至是形式/逻辑概念。如果我用一种给定的编程语言实现一个堆栈,那么我编写的现在就是一个数据结构(这种抽象数据类型)


我的想法正确吗?

大部分情况下,你的想法是正确的

在高层,具体数据类型是一个概念,它允许您制造实例(在OO中称为对象)

ADT(又名接口)是一种合同。这并不意味着执行

根据您的简单类,ADT将是smth,如:

class ISimple {
public:
        void some_simple_action() = 0;
};

如果您从它派生出“Simple”类,您就可以在合同要求的任何地方插入它。

“Simple必须是一个数据结构,因为它是一个实现,对吗?”什么的实现?这里的结构化关系是什么?如果您熟悉OO编程中接口的概念,那么粗略地说,ADT就像接口,数据结构就像非抽象类。数据结构是由其内部实现细节定义的,而ADT是由其支持的操作及其输入/输出应该是什么定义的。例如,您模拟了一个农场。您将创建一个动物类,您将为绵羊、奶牛、猪等创建子类。。。你可以给农场增加一头猪,但可能不是动物,你知道吗?因此,在这个意义上,这个动物站在一个不会直接被实例化的类中,因此它是抽象的。同样,从一个世纪前的一个食盐C++术语开始,事情从那时起已经走了很长的路。