Create

名前

Create — カスタマイズを使い(オプショナル)、型のインスタンスを作成します。

説明

createBegin:とcreateEndメッセージは、作成しているオブジェクトのオプションを指定する一連のメッセージをくくります。この2つのメッセージの間にメッセージをはさむことで、型のパラメータとして定義値をセットしたり、利用可能なメッセージを使った他の形式の仕様を与えることができます。個々のオブジェクト型は、この一時作成フェーズの中で送信が許可される特定のメッセージを定義します。

createBegin:またはcustomizeBegin:のいずれかが返すすべての一時オブジェクトは、getZoneメッセージやdropメッセージをサポートします。これらのメッセージは、最終インスタンスでもサポートできます。つまり、これらのメッセージはDrop型に定義され、通常はある型による継承を経て、最終インスタンスでそれが宣言できるようになります。この型はCreate型には継承されません。なぜなら、次にそのメッセージが適用されるのは、一時オブジェクトでなく最終インスタンスだからです。これらのメッセージはたとえ宣言されていなくても、一時オブジェクトで利用できます。一時オブジェクトに対するdropメッセージは、作成やカスタマイズがすでに開始された後、もはや最終バージョンが不要だと判明した場合に使うことになるでしょう。

Createが定義するcreateメッセージに加え、オブジェクト型は他の任意の名前や呼び出し規則のあらゆるメッセージをサポートできます。これらのメッセージは、他の型が一定の規則に従って自由に継承や実装ができる新しいオブジェクトを作成するための標準メソッドだけを定義します。さらなる規則は別の場所で確立されます。そこで標準的な方式について結合メッセージを作成し、その方式の中でいくつかのステップを結合したcreateメッセージを結合します。

これらのcreateメッセージは、実装しているクラスを隠す型によって実装したり、あるいはオブジェクトを作成するための一様なインターフェイスとしてこれらのメッセージを採用しているクラスによって直接的に実装することが可能です。クラスに直接実装される場合、そのクラスオブジェクトはその後に続くすべてのメッセージ記述において型オブジェクトとして役立ちます。それ以外の場合、型オブジェクトは様々な方式で実装できますが、型に発行されたメッセージが受け入れられるということだけは約束されます。

Createスーパータイプは、新しいオブジェクトを作成するための汎用プロトコルを提供する標準メッセージを定義します。これらのメッセージは、1つのメッセージに新しい型のインスタンスを作成するとき、あるいは作成すべきオブジェクトに利用できるオプションをカスタマイズする一連のメッセージをくくるときに使用できます。作成時の仕様を後のオブジェクトの振る舞いから分離することで、総称的な型を個々のニーズに適応するための高い柔軟性が生まれます。

Createに採用されているプロトコル

DefinedObject Customize

メソッド

フェーズ: Creating

Example defobj/Create/1.

newArray = [Array createBegin: aZone];
[newArray setInitialValue: aList];
[newArray setDefaultMember: UnsetMember];
[newArray setCount: [aList getCount] * 2 );
newArray = [newArray createEnd];   // ! note reassignment of newArray