前回でスクリプトオブジェクトでクラスの作り方を紹介しました。
今回は、サブクラスの作り方です。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
script SubClassObject
property parent : ClassObject
on display_msg2()
display alert my _msg2
end display_msg2
on make
set self to continue make
script SubClassInstance
property parent : self
property _msg2 : "I'm subclass instance."
end script
end make
end script
set x to make SubClassObject
x's display_msg()
x's display_msg2()
要点をまとめます。
- ClassObject を継承した、スクリプトオブジェクト SubClassObject を作ります。
- インスタンスには ClassObject ではなく、SubClassObject を継承してもらう為に、スクリプトオブジェクト Instannce で、property parent : a_class が必要です。
- SubClassObject にハンドラを定義すれば、メソッドの追加/オーバーライドができます。
- property を追加するには、コンストラクタをオーバーライドします。コンストラクタの中でインスタンスを生成して、それを継承したスクリプトオブジェクトで property を追加します。
以上で、本邦初公開、スクリプトオブジェクトでのクラスの作り方の説明はおしまいです。僕が開発した自慢のテクニックです。知っておくと規模の大きなスクリプトを作る時に絶対に役に立つはずです。
XModules で公開している AppleScript モジュールの多くは、このテクニックを使ってクラスの概念を導入しています。もし、ご興味があればソースコードを覗いてみてください。