首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“不变”属性是抽象定义的一部分吗?

“不变”属性是抽象定义的一部分吗?
EN

Stack Overflow用户
提问于 2014-03-05 01:09:37
回答 1查看 379关注 0票数 3

作为我学习的一部分,我认为我发现的抽象定义最好的答案(有意义)是来自堆栈溢出:

什么是抽象?

除此之外,

作为目前在线课程cs61B Fall 2006伯克利的一部分,我学到了下面类似的关于ADT的定义,接近上述定义,但增加了一个额外的单词“不变”。我是否认为这个词是上述定义的必然结果?或者这个词是定义的一部分?

_Abstract_Data_Type_ (ADT)是一个有一个定义良好的接口的类,但是它的实现细节对其他类是完全隐藏的。这样,您就可以更改类的实现,而不会危及依赖它的程序。Date类是ADT。

ADT允许您强制执行不变量.

An invariant 是一个关于数据结构的事实,它总是正确的(假设代码是没有bug的),不管外部类调用了什么方法。例如,date ADT强制执行Date对象始终表示有效日期的不变量。不变量是通过只通过方法调用访问某些字段来实现的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-05 08:00:23

我最喜欢的抽象定义之一是罗伯特·C·马丁(RobertC.Martin)的“敏捷原则、模式和实践”一书

抽象是对不相关事物的消除,是对本质的放大。

基于这一定义,抽象可以在许多不同的层次上采取多种形式:

  • 可以是一个完整的系统
  • 它可以是一个子系统
  • 它可以是消息格式的定义(类似于协议)。
  • 它可以是一个函数(如函数式编程)。
  • 它可以是一个抽象基类。
  • 它可以是一个接口
  • 它可以是一个具体的类
  • 等。

面向对象的软件建设中,Bertrand将类描述为抽象数据类型。本书的思想是抽象数据类型的描述包括前后条件。在埃菲尔(书中使用的语言)中,这些被称为断言,但我们也知道它们是不变量

Meyer关于面向对象设计的观点包括不变式.在一个详细的(类/对象/函数)级别上,我同意将不变量视为描述的一种抽象方式是有意义的。

另一方面,如果抽象是对高级体系结构的描述,那么这种不变量就没有意义。尽管如此,即使在较高的水平上,定义前和后条件也是很有价值的。“系统A必须响应才能使系统B正确工作”),因此考虑不变量与抽象有关是有意义的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22186528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档