前回の復習です。
- AppleScript でつかわれるクラス/オブジェクトという用語は、オブジェクト指向言語でいうクラス/オブジェクトとちょっと違います。
- AppleScript では、オブジェクト指向言語でいうクラスはありません。
- クラスをスクリプトオブジェクトで表現しましょう。
- 同じメソッドをもった複数のオブジェクトを扱う時に便利です。
- メソッドの実装を共有することができるので効率的です。
早速、クラスオブジェクトの例をいきなりお見せしちゃう。
script ClassObject
on display_msg()
display alert my _msg
end display_msg
on make
set a_class to me
script Instance
property parent : a_class
property _msg : "hello"
end script
end make
end script
set x to make ClassObject
x's display_msg()
このサンプルの要点をまとめる。
- クラスオブジェクトとして script ClassObject1 を定義します。
- その中で、make ハンドラをコンストラクタメソッドとして定義します。
- make ハンドラの中で、property だけを持ったスクリプトオブジェクトをそのクラスのインスタンスとして生成します。
- インスタンスとなるスクリプトオブジェクトはクラスオブジェクトを継承します。
- メソッドは、クラスオブジェクト(ClassObject1)で定義します。メソッドの中でインスタンスの property を参照する時には、my が必要です。
という感じでわかるだろうか。
ところで、Instance スクリプトオブジェクトで、わざわざ property parent : a_class としている。実は、上のスクリプトでは、わざわざ parent を明示しなくてもちゃんと動く。parent の指定を省略すると、スクリプトオブジェクトはそれが定義されてたスクリプトオブジェクトを継承するからね。なんで、こんなことをしているかというと、ClassObject1 を継承したサブクラスを作る時に、 set a_class to me
と property parent : a_class が必要になってくる。
次回に続く。