ADT和类之间的区别?

ajk*_*hol 8 c abstract-data-type data-structures

ADT is the set of operations. ADT's are mathematical abstractions.
Run Code Online (Sandbox Code Playgroud)

这是否意味着ADT与班级相同或者我是否混淆在一起?

Duk*_*ing 9

差异的关键是抽象.将ADT更像是一个接口 - 一个只有方法声明的类,没有实现细节.

例如,Stack ADT定义了基本的堆栈操作,如push和pop(但没有说明应该如何实现这些操作),而Stack类将使用链表或数组来实际实现这些操作.

  • @SMVaidhyanathan一旦有了具体的实现,根据定义它就不再是抽象的(因此不能是抽象数据类型)。这就像定义冰淇淋是什么(类似于 ADT)的属性列表(如质地、外观和成分)与如何制作特定类型冰淇淋的配方之间的区别(就像班级一样)。真正的冰淇淋就像这个物体。 (2认同)

小智 8

根据 Code Complete,ADT 是数据和处理该数据的操作的集合。

ADT 示例:

列表

  • 初始化列表
  • 在列表中插入项目
  • 从列表中删除项目
  • 从列表中读取下一项

ADT 构成了类概念的基础。在支持类的语言中,您可以将每个抽象数据类型实现为它自己的类。通常涉及继承和多态的附加概念。将类视为抽象数据类型加上继承和多态的一种方式。