6.24.3.1 Properties of the objects.fs model ¶
- オブジェクトをスタックに渡すのは簡単明瞭です。 スタック上でセレクターを渡すのは多少めんどくさいですが、 可能です。
- オブジェクトはメモリー内の単なるデータ構造であり、 そのアドレスによって参照されます。
constant
のような通常の定義ワードを使用してオブジェクトのワードを作成できます。 同様に、
オブジェクトを含むインスタンス変数と他のデータを含むインスタンス変数の間に違いはありません。
- 遅延結び付け(Late binding)は効率的で使いやすいです。
- 遅延結び付け(Late binding)によりパースが回避されるため、
状態スマート性(state-smartness)や拡張性の低下に関する問題が回避されます。 便宜上、 いくつかのパース・ワードがありますが、
それらには非パース・ワードもあります。 パースする定義ワードもいくつかあります。 すべての標準の定義ワードは(
:noname
を除いて)パースするため、 これを避けるのは困難です。 ただし、 このようなワードは状態スマート(state-smart)ではないため、
他の多くのパース・ワードほど悪くはありません。
- このモデルではすべてを取り入れようとしているわけではありません。 (著者の私見ですけども)このモデルでは、 いくつかのことをうまくやるといった体です。
特に、 このモデルでは情報の隠蔽をサポートするように設計されていません(情報の隠蔽に役立つ可能性のある機能はありますが)。
これを実現するには、また別のパッケージが使用可能です。
- このモデルは階層構造((layered))になっています。 このモデルを使用するために下位階層まですべての機能を学習して使用する必要はありません。
必要な機能はほんのわずかです((see Basic objects.fs Usage, see The object.fs base class,
see Creating objects)。 その他の機能はオプションであり、 互いに独立しています。
- gforth 固有ではなく、 標準 Forth 用の実装が利用可能です。