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