面向对象的实现策略

f4l*_*lco 9 oop implementation smalltalk squeak object

我目前正在Squeak环境中学习Smalltalk,而我正在阅读"Squeak - 快速前往ObjectLand".我使用Python和Java的一些先验知识进入面向对象的范例,第36页的书中的这句话让我想到:

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

短句但非常有趣.在OO中,类,对象,实例等所有术语似乎都是明确定义的,并且似乎指向唯一的真实含义,并且您可能会遇到类似"对象是类的实例"的通用句子.
但是你很少听到实施策略.什么是实现面向对象的概念,在这种情况下,是什么意思?除了类之外是否还有OO语言的实现?

Fra*_*rar 9

Javascript是基于原型的OO语言实现.

您可以通过克隆原型来继承行为,而不是对类进行子类化并创建该新类的实例.

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

有几种实现原型左右浮动佳乐.我没有使用它们,所以我无法评论这些库.


Hel*_*lbo 5

我从来没有看过,但是读到了Emerald,它是面向对象的,但既不是基于类的,也不是基于原型的,但似乎是在一个特殊的构造函数的帮助下"逐个"构造对象:

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

相反,通过执行对象构造函数来创建Emerald对象.对象构造函数是一个Emerald表达式,用于定义对象的表示,操作和过程.

Andrew Black,Norman Hutchinson,Eric Jul和Henry Levy:"翡翠系统中的物体结构".