9

私はOOPを初めて使用しますが、「手続き型」のバックグラウンドを持っています。

私は現在、GNU Smalltalk と Lovejoy の「Smalltalk: Getting The Message」を介して OOP について理解を深めようとしています。

メタクラスとメタクラス クラスとスーパークラスの違いについて、私は混乱しています。スーパークラス -> クラス -> サブクラスの継承の流れを見ることができます。しかし、メタクラスがどのように/どこに収まるかわかりません.TIA ...

4

4 に答える 4

9

無料のオンライン ブックPharo by Exampleの第 13 章 (クラスとメタクラス)に優れた説明があります。この章で説明することは、すべての Smalltalk 実装に共通です。

于 2010-01-25T07:26:38.547 に答える
7

継承には、インスタンス継承とクラス継承の 2 つのレベルがあります。

Smalltalk には、クラスをオブジェクトとして渡すことを可能にする特別なスキームがあります。つまり、クラスも独自の権限を持つオブジェクトです。メタクラスは、「単に」クラス オブジェクトのクラスです。

通常のインスタンスの継承に干渉しないため、superclass -> class -> subclass使用した図のどこにも収まりません。

于 2010-01-25T04:23:42.610 に答える
4

クラスベースの OO には、インスタンス化継承という 2 つの異なる関係があります。

インスタンス化は、オブジェクトとそのクラス、キーワードなどとの間の関係ですnew。通常、オブジェクトの低レベル表現のポインターによって実装されます。Smalltalk では、anObject classこのポインタをトラバースします。クラスがオブジェクトでもあり、クラスのクラスがメタクラスと呼ばれることもありますが、これはインスタンスと同じ関係です。

継承はクラス間の関係です。を実行することでクラスからそのスーパークラスに移動でき、そのクラスにaClass superclass到達するまでこれを続けますObject。Smalltalk では、スーパークラス ポインターはすべてのクラスで定義された単なるインスタンス変数であり、superclassメッセージは通常のアクセサーです。

于 2010-02-02T12:51:37.020 に答える