ここで例題にするオブジェクトは航空機である。航空機には基本的な性格や属性がある:
クラスの宣言とメソッド初期化はこんな風になるだろう:
/*******************************************************/ /* Declare the aircraft class */ /* 航空機クラスの宣言 */ /*******************************************************/ ::CLASS Aircraft /*******************************************************/ /* Declare the INIT method for all new aircrafts. The */ /* INIT method will be invoked for every new object of */ /* the aircraft class. It is invoked as a result of */ /* the NEW message to the aircraft class. */ /* Three arguments will be processed and stored in the */ /* object's instance variables: */ /* 全ての新しい航空機向けのINITメソッドを宣言する。この*/ /* INITメソッドはaircraft(航空機)クラスのオブジェクトが*/ /* 生成される度に、aircraftクラスへのNEWメッセージの結 */ /* 果として実行される。 */ /* 3つの引数がオブジェクトのインスタンス変数に渡され、*/ /* 格納される: */ /* 1. Registration of aircraft 登録番号 */ /* 2. Type of aircraft 形式 */ /* 3. Size (wingspan) 大きさ(翼幅) */ /*******************************************************/ ::METHOD Init Expose Registration Type Size Use Arg Registration, Type, SizeEXPOSE命令はObject REXXにそのメソッドで使われる変数のうち、どれをオブジェクトの変数プールに入れるか知らせる(つまり、EXPOSE命令に渡される変数は特定のメソッドの局所変数ではなく、全てのクラスのメソッドで使うことができることになる)。USE ARG命令はオブジェクトの生成(NEWメッセージによる)時に渡された引数を指定された変数に代入する。
上記のようにクラスを宣言すると、これだけでaircraftオブジェクトを生成することができるようになる。前にみたように、NEWメッセージをクラスに送ればよい。結果としてINITメソッドが実行され、NEWメッセージとともに渡された引数を受取る。この指令で生成されたクラスは、クラス名の前にドットを付けたものでアクセスできる。次の行をコマンドファイルの先頭に加え、何が起きるか見よ:
/* create a new aircraft */ myPlane = .Aircraft‾New("N7650T", "Cessna 172A", 35) say myPlaneこれを実行すると、次の行がスクリーンに現れるであろう:
an AIRCRAFT上の例で、Object REXXの新しい特徴の一つを紹介している。オブジェクトにSAY命令を行うと、そのオブジェクトはSTRINGメッセージを受け取る。オブジェクトが自前のSTRINGメソッドを持っていない場合、デフォルトのメソッドが実行され、クラスの名前に英語の不定冠詞を付けたものを返す。自前のSTRINGメソッドを定義すると、強力な出力ルーチンが得られる。次のメソッド定義を今あるクラス宣言に加えてみよ:
/*******************************************************/ /* Declare the STRING method for the aircraft class. */ /* Return a string using the object's instance */ /* variables. */ /* aircraftクラスのSTRINGメソッドを宣言する。オブジェク*/ /* トのインスタンス変数を用いて文字列を返す。 */ /*******************************************************/ ::METHOD String /* get access to the following instance variables */ /* 以下のインスタンス変数にアクセスできるようにする */ Expose Registration Type Size Return "A" Type "(" || Registration, || ") with a wingspan of" Size || "ft"Running the improved program will result in the following line displayed on the screen: 改良版を実行すると、次の行がスクリーンに現れるであろう
A Cessna 172A (N7650T) with a wingspan of 35ft