Flash CS3 ドキュメンテーション |
|||
| ActionScript 3.0 のプログラミング > ActionScript 言語とシンタックス > 言語の概要 | |||
オブジェクトは、ActionScript 3.0 言語の中心部に位置する基本的要素です。宣言する変数、記述する関数、作成するクラスインスタンスはすべてオブジェクトです。ActionScript 3.0 プログラムは、タスクを実行し、イベントに応答し、相互に通信するオブジェクトのグループと考えることができます。
Java または C++ のオブジェクト指向プログラミング (OOP) に詳しいプログラマは、オブジェクトをメンバー変数またはプロパティに格納されたデータ、またはメソッドを介してアクセスできる動作の 2 種類のメンバーを含むモジュールと見なす場合があります。ActionScript 3.0 が準拠している ECMAScript 第 4 版案では、よく似ていますが少し異なる方法でオブジェクトが定義されています。ECMAScript の草案では、オブジェクトは単にプロパティの集まりです。プロパティは、データだけではなく関数や他のオブジェクトも保持できるコンテナです。このようにオブジェクトに関連付けられている関数をメソッドと呼びます。
ECMAScript の草案の定義は Java または C++ のプログラマには少し奇妙に思えるかもしれませんが、実際には ActionScript 3.0 クラスを使用するオブジェクト型の定義は、Java や C++ でクラスを定義する方法に非常によく似ています。オブジェクトの 2 つの定義の違いは ActionScript オブジェクトモデルおよびその他の高度なテクニックについて説明する場合には重要ですが、ほとんどの場合、"プロパティ" という用語は、メソッドとは対照的に、クラスのメンバー変数を意味します。たとえば、『ActionScript 3.0 コンポーネントリファレンスガイド』では、"プロパティ" は変数または getter/setter プロパティを示すために使用されています。草案では、クラスの一部である関数を意味する用語 "メソッド" が使用されています。
ActionScript のクラスと Java または C++ のクラスには微妙な違いがあります。それは、ActionScript ではクラスは単なる抽象エンティティではないということです。ActionScript のクラスは、クラスのプロパティおよびメソッドを格納するクラスオブジェクトによって表されます。これにより、クラスまたはパッケージの最上位のインクルードステートメントまたは実行可能なコードなど、Java および C++ プログラマには異質なものに見える手法が可能になります。
ActionScript のクラスと Java または C++ のクラスのもう 1 つの違いは、ActionScript の各クラスには "プロトタイプオブジェクト" と呼ばれるものがあることです。旧バージョンの ActionScript では、プロトタイプオブジェクトは "プロトタイプチェーン" に関連付けられてクラスの継承階層全体の基盤として機能しましたが、ActionScript 3.0 では、プロトタイプオブジェクトは継承システムにおいて小さな役割を果たすだけです。ただし、クラスのすべてのインスタンスでプロパティとその値を共有する場合、プロトタイプオブジェクトは静的プロパティおよびメソッドの代わりとして引き続き役立ちます。
これまで、熟練した ActionScript プログラマなら、特別なビルトイン言語エレメントを使用してプロトタイプチェーンを直接操作できました。現在では、ActionScript はクラスベースのプログラミングインターフェイスのさらに成熟した実装を提供しています。__proto__ や __resolve などの特別な言語エレメントの多くは ActionScript に含まれていません。また、Flash Player のパフォーマンスを大幅に向上させる内部継承メカニズムが最適化され、継承メカニズムに直接アクセスできなくなりました。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flash/9.0_jp/main/00000038.html