Q14-1:p134で四則演算用にサブルーチンを4つ追加しています。ここであえてサブーチンを4つ追加する理由は何なのでしょうか?上層にメソッドを公開するために必要なのでしょうか?
A14-1:
4つのサブルーチンにはそれぞれ[算術演算子コンポーネント格納変数]を接続し、「演算子を設定する(PFArithmenticOperator)」を実行するようになっています。
br />
完成のアプリケーションでは、例えばbr />
@「+ボタン」を押すと→ [サブルーチン]「+押下げ処理を呼び出す」が実行されるbr />
A(「+押下げ処理を呼び出す」が実行されたので、)→ [算術演算子コンポーネント格納変数]「演算子を設定する」が実行される
という流れになります。
ここで真に行いたいことは『「+ボタン」を押すと→[算術演算子コンポーネント格納変数]「演算子を設定する」が実行される』ということですが、
[算術演算子コンポーネント]もさらに、メソッド「演算子を設定する」に必要な引数(ここでは[加算]コンポーネント等)も[複合コンポーネント]内に入っているので、一旦複合コンポーネント内で処理を設定し、それを上位の階層から呼び出す必要があります。
[サブルーチン]は処理を纏めておくためのコンポーネントですので、ここで使用しています。
Q14-2:
複合コンポーネントをもちいた電卓の作成法についてご返答頂きましたが、良くわからない部分がありますので質問致します。
下層での設定ですが、数値を文字列として入力する場合には、新たにサブルーチンを設定せずに、メソッドの公開だけで済みました。しかし、四則演算の演算子においては、メソッドの公開だけでなく、新たにサブルーチンの設定をおこなっています。その理由をお聞かせ下さい。すなわち、2層に分割する前のプログラムでは、電卓として機能していました。それを複合コンポーネントを介して2層に分割するだけだと私は考えていました。しかし、テキストでは下層で新たにサブルーチンを設定しています。新たに設定しなければならない理由をお聞かせ下さい。
その答えは、4つの四則演算子のそれぞれで異なるメソッドを公開したいがためでしょうか?算術演算子コンポーネント格納変数(入力)のメソッドの公開では4つの演算子で違いが設定できないから敢えてサブルーチンを設定しているのでしょうか?
A14-2:
> 新たに設定しなければならない理由をお聞かせ下さい。
メソッドを利用したいコンポーネントだけでなく、引数として使用したいコンポーネントも複合コンポーネント内に入っているからです。
例えば[サブルーチン]は追加せず、[算術演算子コンポーネント格納変数]のメソッド「演算子を設定する(PFArithmenticOperator)」を公開設定したと仮定して考えてみます。
上位の階層で、「+ボタン」等のアクションイベントに対してこの「演算子を設定する(PFArithmenticOperator)」のメソッド処理を接続できます。
続いてこのメソッドの引数の設定をするわけですが、引数として設定したい[加算]等のコンポーネントは[複合コンポーネント]内部にあり、上位の階層では設定ができません。
したがって、一旦この「演算子を設定する(PFArithmenticOperator)」のメソッド処理は複合コンポーネント内に作成する必要があります。
[サブルーチン]は作成した処理を繋いでおくため使用しています。
Q14-3:
複合コンポーネントをもちいた電卓の作成でサブルーチンを設定する必要があることは大体、把握できました。しかし、回答の最後にあります
> [サブルーチン]は作成した処理を繋いでおくため使用しています。
これは、どのような意味でしょうか?作成した処理とは何でしょうか?繋いでおくとは、何と何を繋ぐのでしょうか?
A14-3:
「繋いでおく」という表現があいまいで申し訳ありません。
「サブルーチンを左側接続元コンポーネントとして使用し右側に処理(今回は[算術演算子コンポーネント格納変数])を接続する」という意味です。
行いたい処理を描く際、適当なきっかけ(イベント)を見つけ接続する必要があります。
今回は複合コンポーネント内の[算術演算子コンポーネント格納変数]「演算子を設定する(PFArithmenticOperator)」の処理について考えています。
複合コンポーネント内の処理は、上位の階層のコンポーネントに対する操作/メソッド処理をきっかけに実行したい場合もあり、その時には複合コンポーネント内に適当なイベントが見つからないこともあります。
特に接続すべきイベントがない場合には、サブルーチンを追加し、そのサブルーチンを左側接続元として、行いたい処理を接続することができます。