プロパティによって、コンポーネントのユーザーはコンポーネントの状態を変更できます。プロパティにより、内部の実装を隠したまま、コンポーネントの変数の値を設定または読み取ることができます。プロパティを作成することにより、コンポーネントの作成者は、基礎のデータ構造を公開することなく、コンポーネントの状態へのアクセスを許可できます。
コンポーネントでプロパティを使用すると、次のような多くの利点があります。
プロパティを使用すると、JDeveloperのJavaビジュアル・エディタの全機能を利用できます。コンポーネントのユーザーは、コンポーネントの状態をプロパティ値の設定により変更し、その変更の結果をプログラム上でただちに確認できます。デフォルトでは、あるコンポーネントのすべてのパブリック・プロパティは、他のコンポーネントでも使用可能ですが、オプションのBeanInfoクラスを使用し、公開するプロパティを指定することにより、コンポーネント・プロパティへの設計時のアクセスを制御できます。
プロパティのアクセッサ・メソッドには、複雑な機能を組み込めます。コンポーネントのユーザーは、setProperty()
またはgetProperty()
メソッドをコールするだけでよいため、詳細な知識は必要ありません。簡単な数値に見えるプロパティが、実際にはデータベースにおいて長い計算や検索を行うこともあります。コンポーネントのユーザーは、そのような複雑な処理を扱う必要がありません。
プロパティの設定または読込み時に、必ずアクセッサ・メソッドが他のオブジェクトに通知または、他のメソッドをコールするようにできます。アクセッサ・メソッドによりコンポーネントのあらゆる種類の複雑な動作をカプセル化できます。コンポーネントのユーザーは、メソッドのコール方法を知っているだけで済みます。
プロパティには、コンポーネントで定義され、適切な名前の付いたアクセッサ・メソッドを指定することをお薦めします。コンポーネントには、そのコンポーネントに関連付けられたクラス・データ・メンバー(フィールド)を指定する必要はありません。コンポーネントのクラス・データ・メンバーと指定したコンポーネント・プロパティ間には、1対1の関係がない場合があるからです。たとえば、次のコードでは、shadowColor
というコンポーネント・プロパティを定義しています。
public class MyComponent extends Panel {
private int redValue;
private int greenValue;
private int blueValue;
public int getShadowColor() {
return redValue | greenValue | blueValue;
}
public void setShadowColor(int color) {
redValue = color & 0xff0000; // class data members
greenValue = color & 0x00FF00;
blueValue = color & 0x0000FF;
}
}
MyComponent
にはshadowColor
という名前の実際のクラス・データ・メンバーはありませんが、2つのアクセッサ・メソッドgetShadowColor()
とsetShadowColor()
によってこのプロパティは正しく定義されています。これらのメソッドでは、3つの変数の書込みと読取りを行い、プロパティの値を計算します。コンポーネント・プロパティで、プロパティと同じ名前の変数を設定することがよくありますが、必ずしもその必要はありません。コンポーネント・プロパティを有効にするためには、正しく宣言されたプロパティ・アクセッサ・メソッドのみが必要です。
Copyright © 1997, 2004, Oracle. All rights reserved.