作为我学习的一部分,我认为我发现的抽象定义最好的答案(有意义)是来自堆栈溢出:
除此之外,
作为目前在线课程cs61B Fall 2006伯克利的一部分,我学到了下面类似的关于ADT的定义,接近上述定义,但增加了一个额外的单词“不变”。我是否认为这个词是上述定义的必然结果?或者这个词是定义的一部分?
_Abstract_Data_Type_ (ADT)是一个有一个定义良好的接口的类,但是它的实现细节对其他类是完全隐藏的。这样,您就可以更改类的实现,而不会危及依赖它的程序。Date类是ADT。
ADT允许您强制执行不变量.
An invariant 是一个关于数据结构的事实,它总是正确的(假设代码是没有bug的),不管外部类调用了什么方法。例如,date ADT强制执行Date对象始终表示有效日期的不变量。不变量是通过只通过方法调用访问某些字段来实现的。。
发布于 2014-03-05 08:00:23
我最喜欢的抽象定义之一是罗伯特·C·马丁(RobertC.Martin)的“敏捷原则、模式和实践”一书
抽象是对不相关事物的消除,是对本质的放大。
基于这一定义,抽象可以在许多不同的层次上采取多种形式:
在面向对象的软件建设中,Bertrand将类描述为抽象数据类型。本书的思想是抽象数据类型的描述包括前后条件。在埃菲尔(书中使用的语言)中,这些被称为断言,但我们也知道它们是不变量。
Meyer关于面向对象设计的观点包括不变式.在一个详细的(类/对象/函数)级别上,我同意将不变量视为描述的一种抽象方式是有意义的。
另一方面,如果抽象是对高级体系结构的描述,那么这种不变量就没有意义。尽管如此,即使在较高的水平上,定义前和后条件也是很有价值的。“系统A必须响应才能使系统B正确工作”),因此考虑不变量与抽象有关是有意义的。
https://stackoverflow.com/questions/22186528
复制相似问题