HyperCard tribute

メッセージについて


 HyperCardはオブジェクト指向言語です。ボタンやフィールドといったオブジェクトにメッセージを送り、オブジェクトがそれを受け取って実行します。
 メッセージの発生は以下のような場合に起こります。

  • ユーザーのアクション
  • HyperCardの状況の変化
  • スクリプトがメッセージを送った

     例えば、マウスボタンがクリックされた(これはユーザーのアクションに属します)としましょう。
     まず、マウスボタンが下がった時にmouseDownメッセージがオブジェクトに対して送られ、次にマウスボタンから指を話したときにmouseUpメッセージがオブジェクトに送られます。
     これらのメッセージはオブジェクトに送られるわけですが、マウスボタンをクリックした場所によって、どのオブジェクトに最初にメッセージを送るかが変わります。すなわち、ボタンの上でクリックしたならば、そのボタンに最初にメッセージが送られ、フィールドの上でクリックしたならば、そのフィールドに最初にメッセージが送られると言うわけです。
     もし、最初にメッセージを送ったオブジェクトに、対応するハンドラがなければ(この場合は、mouseDownハンドラとmouseUpハンドラ)、このメッセージは上の階層に送られます。

     もし、ボタン1がクリックされたなら、まずボタン1、次にカード、バックグラウンド、スタックへとメッセージは伝えられていきます。
     ここで、注意すべき事は、ボタン1とボタン2とフィールドは同階層に位置し、メッセージは同階層のオブジェクトには伝えられないと言うことです。ボタン2がクリックされたなら、ボタン2、カード、バックグラウンド、スタックへと伝えられます。ボタン1やフィールドにはメッセージは伝わりません。
     もう一つの注意すべき点は、メッセージの発生点はボタン、フィールド、カードから始まると言うことです。最初に、バックグラウンドやスタックへメッセージが伝わることはありません。

     次のセクションでは具体的な例を用いて、メッセージ伝達の説明をします。