OOP背后有理论/抽象吗?


13

函数式编程具有非常优雅的Lambda微积分及其变体作为备份理论。OOP有这样的事情吗?什么是面向对象模型的抽象?


5
负载和负载。您尝试过Google吗?例如,自1993年以来,有一个名为FOOL的研讨会系列专门讨论面向对象语言的基础。这只是表面上的事情。
戴夫·克拉克2013年

@DaveClarke。我不太同意。Lambda演算是非常精确的函数式编程的基础。例如,Haskell报告说,整个Haskell语言可以被视为等同于类型化Lambda演算的核心语言的语法糖。我不知道任何关于微积分的类似的面向对象语言。因此,您认为存在“负载”是正确的。但是,这都不对。
Uday Reddy 2014年

@UdayReddy:这可能是由于面向对象语言的丰富性。
戴夫·克拉克

1
@DaveClarke话题的丰富性可能意味着(1)它是一个很好的流行词,(2)我们对主题的理解不足以建立共识,(3)我们正在混合几个正交的问题。尽管我还没有密切关注有关OO编程的(最新)文献,但我始终感觉到它是混合问题,但对此却不太明确(当然,这更适用于语言而不是理论工作)。这些问题包括类型,抽象,状态,并行性,代码重用。一个(一种)理论不可能解决所有变体。
babou 2015年

Answers:


15

有四种主要方法,尽管这些方法仅涉及可用方法的表面:


12

以下文档描述了对象模型核心与集合理论之间的联系:

这些文档介绍了实例的结构以及对象之间的继承关系。这样的结构可以被认为是OOP的最高可能抽象。它显示了该结构如何应用于特定的编程语言(Ruby,Python,Java,Scala,Smalltalk-80,Objective-C,CLOS,Perl,Dylan,JavaScript)以及本体语言(RDF Schema和OWL 2 Full)。

在文档中,采用类是对象的方法,以便核心结构是单分类的。在主要形式中,结构可以表示为(O, ϵ ,≤,.ec)其中

  • O是一组对象
  • ϵ是(对象)成员关系,是实例关系的细化,
  • ≤是继承关系,并且
  • .ec幂级映射,它是distinguished的独特子关系,可能是空的。

下图显示了根据Ruby对象模型的示例核心结构。绿色链接显示在自反传递还原继承关系,蓝色的链接显示在“包容减排”的隶属关系-从蓝色链接X点的至少容器X。powerclass映射.ec由水平蓝色链接形成。该地图图像中的对象是功率类(灰色)。在Ruby中,它们被称为特征单例类(不推荐使用后者)。对象suv(粉红色)为终端,其余对象是继承根 r的后代。

  r = BasicObject; c = Class; A = c.new(r); B = c.new(A); s = A.new; u = B.new; v = B.new; class << s; end; class << v; end

以上所有语言的对象模型的核心部分都可以看作是结构的专业化,没有或只有少量其他组成部分。从理论上讲,其他成分的最重要情况是Dylan引入的单例图(表示为.ɛϲ)。这使Dylan(如上所述)成为唯一不受左至右解释组成符号○的单调性条件(≤)○(ϵ)⊆(ϵ)的编程语言。

形式化对象模型核心和集合论之间联系的一种方法是通过在参考文档中称为元对象结构的结构族(O,≤,r,.ec,.ɛϲ),因为可以考虑x.ecx.ɛϲ作为x的元对象。在这些结构中x.ec对每个对象定义Xx.ɛς对每个定义的有界(“小”)对象X。结构遵循以下九个公理。公理化使用定义性扩展,对于前八个公理(T表示集合终端对象-那些并非的后代- [R ,和.ec *是自反传递闭包.ec),而是涉及在过去的公理。

  1. 继承是部分顺序。
  2. 幂级映射.ec是自身的(O,≤)嵌入顺序。
  3. 来自T.ec ∗的对象很小。
  4. 每个幂级都是r的后代。
  5. 集合r.ec 没有下限。
  6. 单例映射.ɛϲ是单射的。
  7. 来自O.ɛϲ.ec ∗的对象最少。
  8. 对于定义 x.ɛϲ的每个对象xyx.ɛϲ≤y.ec↔x≤y
  9. 对于每个对象xx.ɛϲ定义为 xd <

在最后一个公理中,ϖ是固定的极限序数,.d是由定义扩展得出的函数。获得对象隶属关系ϵ为((.ɛϲ)∪(.ec))○(≤)。根据最后一个公理,ϵ对有界对象集的区域限制等于(.ɛϲ)○(≤)。在引用的文档中,此关系称为有限成员资格,并表示为。作为一个重要特征,这种关系是有根据的。这与r相反,因为r ϵ r。事实证明,对象技术(核心技术)与集合论之间的主要对应关系可以表示为

∈∈

即,有界成员资格对应于良好基础的集合之间的集合成员资格。作为特例,等级+1的冯·诺伊曼局部宇宙是通过定义扩展的超对象结构。通常,每个抽象(ϖ + 1)- 上层结构 (O,在定义上都等同于完整的元对象结构。每个元对象结构都可以忠实地嵌入到完整的元对象结构中,而完整的元对象结构又可以忠实地嵌入von Neumann宇宙中。

术语“ 基本结构”用于概括元对象结构。在这种概括中,.ec.ɛϲ被允许(任意)部分,可能为空。特别是,有限的基本结构是可能的,最小结构仅包含继承根r。每个基本结构都可以通过幂级完成和单例完成而扩展为元对象结构,这又使基本结构可以忠实地嵌入到冯·诺伊曼宇宙中。


@Raphael 很多更好的-感谢,PAON!
David Richerby
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.