Oberon 的面向对象模型与标准 OOP 有何不同?



我一直在阅读Wirth关于Oberon的书——或者至少是在尝试阅读——但是当我要弄清楚Oberon中关于面向对象编程的情况时,我遇到了一个心理障碍。

我知道他的方法应该通过避免"标准"OOP语法来简化面向对象编程,他将其标记为犯罪,好像它是某种程度上的犯罪,也许我只是太植根于类,方法等…但是有人能把Oberon的方法翻译成标准的面向对象语言,或者至少在概念上解释一下吗?

您可以通过比较Ada的标记类型(在Ada 95 Rationale: II.1 Programming by Extension中检查)与Oberon-2的类型标记(在 Oberon-2中的面向对象编程:运行时数据结构中讨论)来获得一些见解。两者都使用带有隐藏类型信息的记录结构来实现继承和多态性。另请参见 Ada 95和Java面向对象特性的比较,此处引用。

附录:所以他们只是简单地将程序与记录相关联?

Oberon记录类型封装过程和数据,其方式类似于object Pascal中的对象类型。Ada标记的记录封装数据,而封闭包封装子程序和记录。