抽象和原始数据类型 (ADT)

Abstract and Primitive Data Types (ADT)

我知道这个问题已经被问过一百万次了,但是有人可以向我解释一下 ADT 的确切含义吗(如果可能的话,用外行人的话说)?

我读了ADT的这个定义- ADT只提到要执行什么操作,但没有提到这些操作将如何实现。 原始数据类型也是如此。

假设如果我们有一个 float 数据类型,我们知道可以执行乘法、除法等运算(所以我们知道 将执行什么运算)但是我们不知道'它将如何执行(在乘法的情况下,我们可以乘法或重复加法,所以我们有两个过程给出相同的结果,因此它是抽象的)。所以这两种数据类型本质上是相同的。 (我知道这是不正确的)。

我知道我错了。有人可以帮我弄清楚这个概念吗?

抽象数据类型 - 这些是用于处理数据的构建块,否则这些数据将只是一串 1 和 0。您更愿意使用液态金属还是螺母和螺栓来建造?

数据类型是任何编程语言中的数据分类 - 例如整数、字符、浮点数等。

抽象数据类型是一个理论概念。抽象数据类型 (ADT) 是数据类型的数学模型,其中数据类型是从数据用户的角度通过其行为(语义)定义的,特别是在可能的值、对数据的可能操作方面这种类型,以及这些 operations.A 组数据值和相关操作的行为,这些数据值和相关操作是独立于任何特定实现而精确指定的。抽象数据类型(ADT)是对一组数据以及可以对数据执行的一组操作的规范。

例如:堆栈是一种抽象数据类型。栈 ADT 可以有 push、pop、peek 等操作。这三个操作定义了类型可以是什么,而不管实现的语言。

所以我们可以说,原始数据类型是抽象数据类型的一种形式。只是它们是由语言制造者提供的,并且非常特定于该语言。所以基本上有两种类型的数据类型原语和用户定义。但是它们都是抽象数据类型。我希望这能说明问题。

很久没问这个问题了,但我有一个可能更清楚的答案。

数据类型 - 处理一组值、它们的表示和一组可应用于它们的操作。

抽象数据类型 (ADT) - 处理一组值和一组可以对其执行的操作。

两者的区别在于ADT不关心这些值的表示。