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

问题描述 投票:0回答:1

Dale and Walker的Abstract Data Types(1996)中的以下定义:

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

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

所以,让我们用C ++编写一个简单的类:

class Simple {
public:
        void some_simple_action();

private:
        int x, y;
};

简单必须是数据结构,因为它是实现,对吗?对于此类,它是什么抽象数据类型?

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

我想的正确吗?

c++ data-structures computer-science abstract-data-type
1个回答
0
投票

在大多数情况下,您正在考虑正确。

从总体上讲,具体的数据类型是concept,可用于制造实例(在OO中称为对象)

ADT(又名接口)是合约。它并不意味着实现。

WRT您的简单类,ADT如下:

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

并且如果您从中派生“ Simple”类,则可以在合同要求ISimple的任何地方注入它。

© www.soinside.com 2019 - 2024. All rights reserved.