This essay详细描述了“对象”和“抽象数据类型”(ADT)(here是同一作者的较旧解释)
以下是摘录:
尽管经过25年的研究,仍然存在 关于 两种形式的数据抽象的广泛混淆, 抽象数据类型和对象。这篇文章试图 解释差异以及差异为何重要。
典型的反应是一种变体 “对象是一种抽象数据类型”。 此响应与大多数编程语言一致 教科书。 [...但是]教科书是 错误!对象和抽象数据类型不一样 事情,而且没有一个是另一个的变体。他们是 根本不同,在许多方面互补, 因为一方的优势是另一方的弱点。 大多数现代编程都掩盖了这些问题 语言支持对象和抽象数据 类型,通常将它们组合成一种句法形式。 但句法混合并不能消除基本语义 影响灵活性,可扩展性,安全性和差异性的差异 节目的表现。因此,要使用现代编程 语言有效,人们应该理解 对象和抽象数据之间的根本区别 类型。
使用现代的非学术语言示例是否有简明的解释? (如果没有,如果有人在这里提供一个,或者我有时间可以写自己的答案,那就太好了)
特别感兴趣的是对象和ADT之间的定义和区别,以及编写代码(或设计语言)时的实际意义。
我强烈建议您在评论或回答之前查看链接的文章。
以下是我正在寻找的一种洞察力的例子,也摘自论文:
抽象数据类型定义了将给定操作的行为收集在一起的操作。对象以另一种方式组织矩阵,将与给定表示相关联的所有动作收集在一起。在ADT中添加新操作以及使用对象的新表示更容易。 [...]面向对象的程序可以使用继承来添加新操作。
请注意,至少就文章而言,截至2014年1月3日,维基百科错误(或至少不完整)和大多数教科书 。这篇文章是由一位计算机科学教授撰写的,他注意到对这些概念缺乏了解,甚至他的学术同行。