【问题标题】:Implementation Strategies for Object Orientation面向对象的实现策略
【发布时间】:2012-10-16 13:25:40
【问题描述】:

我目前正在 Squeak 环境中学习 Smalltalk,并且正在阅读“Squeak - ObjectLand 快速之旅”。我带着一些 Python 和 Java 的先验知识进入了面向对象的范式,本书第 36 页的这句话让我想到:

Smalltalk 是面向对象语言的基于类的实现。

句子很短,但很有趣。在 OO 中,类、对象、实例等所有术语似乎都有明确的定义,并且似乎指向唯一的真正含义,并且您可能会遇到诸如“对象是类的实例”之类的通用句子。
但是您很少听到有关实施策略的信息。在这种情况下,面向对象概念的实现是什么意思?除了类还有面向对象语言的实现吗?

【问题讨论】:

    标签: oop object implementation smalltalk squeak


    【解决方案1】:

    Javascript 是一种基于 prototype 的面向对象语言的实现。

    您无需继承类并创建该新类的实例,而是通过克隆原型来继承行为。

    作为历史记录,我应该补充一点,虽然 Javascript 可能是最广泛使用的原型使用语言,但首先是 David Ungar 和 Randall Smith 的 Self language

    有几个 implementationsprototypes 为 Squeak 浮动。我没有使用它们,所以我无法评论这些库。

    【讨论】:

    • 这是 Smalltalk 的另一个原型实现,scg.unibe.ch/staff/adriankuhn/protalk,它实际上将类点弯曲为指向它自己的对象。据我所知,它是唯一为 Smalltalk 提供 native 原型的 Smalltalk 原型框架。所有其他将原型实现为基于 Smalltalks 类的模型之上的一个层。
    【解决方案2】:

    我从未见过,但读过关于 Emerald,它是面向对象的,但既不是基于类也不是基于原型,但似乎在特殊构造函数的帮助下“一个接一个”地构造对象:

    但是,Emerald 对象的创建不需要 Class 对象。在大多数基于对象的系统中,程序员首先指定一个定义其所有实例的结构和行为的类对象。类对象还响应新调用以创建新实例。

    相比之下,Emerald 对象是通过执行对象构造函数来创建的。对象构造函数是定义对象的表示、操作和过程的 Emerald 表达式。

    Andrew Black, Norman Hutchinson, Eric Jul, and Henry Levy: "Object Structure in the Emerald System"

    【讨论】:

      猜你喜欢
      • 2012-04-16
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 2021-11-16
      • 2021-07-16
      • 1970-01-01
      相关资源
      最近更新 更多