Dale and Walker的Abstract Data Types(1996)中的以下定义:
数据结构:结构化关系的实现。
ADT(抽象数据类型):逻辑行为为由一组值和一组操作定义。
所以,让我们用C ++编写一个简单的类:
class Simple {
public:
void some_simple_action();
private:
int x, y;
};
简单必须是数据结构,因为它是实现,对吗?对于此类,它是什么抽象数据类型?
[第二,我是否正确地推测出ADT只是某种事物的概念性表示:就像我们可以用名字来称呼某事物的想法一样?例如,关于栈是什么有一个共同的想法,甚至是形式上/逻辑上的概念。如果我以给定的编程语言实现堆栈,那么我写的就是一个数据结构(具有这种抽象数据类型)。
我想的正确吗?
在大多数情况下,您正在考虑正确。
从总体上讲,具体的数据类型是concept,可用于制造实例(在OO中称为对象)
ADT(又名接口)是合约。它并不意味着实现。
WRT您的简单类,ADT如下:
class ISimple {
public:
void some_simple_action() = 0;
};
并且如果您从中派生“ Simple”类,则可以在合同要求ISimple的任何地方注入它。