9

私は現在 Squeak 環境で Smalltalk を学んでおり、「Squeak - A Quick Trip To ObjectLand」を読んでいます。私は Python と Java の予備知識を持ってオブジェクト指向のパラダイムに入り、本の 36 ページにあるこの文から次のように考えさせられました。

Smalltalk は、オブジェクト指向言語のクラスベースの実装です。

短い文章ですがとても興味深いです。OO では、クラス、オブジェクト、インスタンスなどのすべての用語が明確に定義されているように見え、唯一の真の意味を指しているように見え、「オブジェクトはクラスのインスタンスである」などの一般的な文に出くわす可能性があります。
しかし、実装戦略について耳にすることはめったにありません。この場合、オブジェクト指向の概念の実装は何を意味するのでしょうか? クラス以外の OO 言語の実装はありますか?

4

2 に答える 2

9

Javascriptは、オブジェクト指向言語のプロトタイプベースの実装です。

クラスをサブクラス化してその新しいクラスのインスタンスを作成する代わりに、プロトタイプのクローンを作成して動作を継承します。

歴史的なメモとして、Javascriptはおそらく最も広く使用されているプロトタイプ使用言語ですが、最初の言語はDavidUngarとRandallSmithのSelf言語でした。

Squeak用に浮かんでいるプロトタイプのいくつかの実装があります。私はそれらを使用したことがないので、ライブラリについてコメントすることはできません。

于 2012-10-26T11:27:57.010 に答える
5

私は見たことがありませんが、オブジェクト指向であるがクラスベースでもプロトタイプベースでもなく、特別なコンストラクターの助けを借りてオブジェクトを「1つずつ」構築するように見えるEmeraldについて読みました。

ただし、Emerald オブジェクトの作成には Class オブジェクトは必要ありません。ほとんどのオブジェクトベースのシステムでは、プログラマは最初に、すべてのインスタンスの構造と動作を定義するクラス オブジェクトを指定します。クラス オブジェクトは、新しいインスタンスを作成するための新しい呼び出しにも応答します。

対照的に、Emerald オブジェクトは、オブジェクト コンストラクターを実行することによって作成されます。オブジェクト コンストラクターは、オブジェクトの表現、操作、およびプロセスを定義する Emerald 式です。

Andrew Black、Norman Hutchinson、Eric Jul、Henry Levy の「Emerald System のオブジェクト構造」を参照してください。

于 2012-10-26T12:57:43.310 に答える