【发布时间】:2020-05-05 10:25:19
【问题描述】:
Dale 和 Walker 的 Abstract Data Types (1996) 中的以下定义:
数据结构:结构化关系的实现。
ADT(抽象数据类型):其逻辑行为是 由一组值和一组操作定义。
那么,让我们在 C++ 中创建一个简单的类:
class Simple {
public:
void some_simple_action();
private:
int x, y;
};
Simple 必须是一种数据结构,因为它是一种实现,对吗?关于这个类,它的抽象数据类型是什么?
其次,我是否正确地推测 ADT 只是某物的概念表示:就像我们可以通过名称调用某物的概念一样?例如,对于堆栈是什么有一个共同的想法,甚至是形式/逻辑概念。如果我用给定的编程语言实现一个堆栈,那么我现在写的就是一个数据结构(这种抽象数据类型)。
我的想法正确吗?
【问题讨论】:
-
"Simple 必须是数据结构,因为它是一种实现,对吗?" 什么的实现?这里的结构化关系是什么?
-
如果你熟悉OO编程中的接口概念,那么粗略的说ADT就像一个接口,一个数据结构就像一个非抽象类。数据结构由其内部实现细节定义,但 ADT 由它支持的操作以及它们的输入/输出应该是什么来定义。
-
比如说你在模拟一个农场。您将创建一个 Animal 类,然后为 Sheep、Cow、Pig 等创建子类...您可以将 Pig 添加到农场,但可能不是 Animal,你知道吗?所以从这个意义上说,Animal 是一个不会被直接实例化的类,因此它是抽象的。
-
另外,对 25 年前的 C++ 术语持保留态度——从那时起,事情已经走过了漫长的道路。
标签: c++ data-structures computer-science abstract-data-type