gpt4 book ai didi

architecture - 'invariant' 属性是抽象定义的一部分吗?

转载 作者:行者123 更新时间:2023-12-04 03:57:05 24 4
gpt4 key购买 nike

作为我学习的一部分,我认为我发现的抽象定义的最佳答案(有意义)来自 stackoverflow:

What is abstraction?

除此之外,

作为 2006 年秋季伯克利在线类(class) cs61B 的一部分,我了解了与上述定义接近的 ADT 的类似以下定义,但添加了一个额外的词“不变”。我应该将这个词视为上述定义的必然结果吗?或者这个词是定义的一部分吗?

_Abstract_Data_Type_ (ADT) 是一个具有定义良好接口(interface)的类,但它的实现细节对其他类来说是完全隐藏的。那样,你可以改变一个类的实现而不危及依赖它的程序。 Date 类是一个 ADT。

ADT 允许您执行不变量。

不变 是关于数据结构的事实,无论外部类调用什么方法,它始终为真(假设代码没有错误)。例如,Date ADT 强制执行 Date 对象始终表示有效日期的不变性。通过仅允许通过方法调用访问某些字段来强制执行不变量。

最佳答案

我最喜欢的抽象定义之一是罗伯特·C·马丁 (Robert C. Martin) 的书 Agile Principles, Patterns, and Practices :

Abstraction is the elimination of the irrelevant and the amplification of the essential.

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

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

Object-Oriented Software Construction , Bertrand Meyer 将类描述为抽象数据类型。本书的想法是抽象数据类型的描述包括前置条件和后置条件。在 Eiffel(书中使用的语言)中,这些称为断言,但我们也将它们称为不变量

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

另一方面,如果您的抽象是对高级架构的描述,那些类型的不变量就没有意义。尽管如此,即使在高层次上,定义前置条件和后置条件通常也是有值(value)的(例如“系统 A 必须做出响应才能使系统 B 正常工作”),因此考虑不变量确实有意义与抽象的关系。

关于architecture - 'invariant' 属性是抽象定义的一部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22186528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com