2006-03-08 クラスパッケージ化ツール(CPT)の特徴 JavaScript CPT クラスパッケージ化ツール(CPT*1)でできることは以下の通りです。 オブジェクト指向 プロトタイプベースの継承が可能 ソース上もわかりやすい形で"クラス"を作成できる 定義できる変数の種類は以下の通り クラス所属のプライベート変数・メソッド(継承されない) クラス所属のスタティック変数・メソッド(継承される) クラス所属のパブリック変数・メソッド(継承されない*2) プロトタイプ所属のパブリック変数・メソッド(継承される) インスタンス所属のプライベート変数・メソッド(継承されない) インスタンス所属のパブリック変数・メソッド(継承される) 当然、多段階の継承も可能である 継承後にスーパークラスが動的に変更*3されたときでも、サブクラスでその変更が有効になる 抽象クラス的な使い方,インターフェース*4を使用できる クラスパッケージ化 パッケージ化によりクラスに名前空間が導入される 1クラス1ファイルとして保存するので、保守が楽になる クラスが増えてもscriptタグの記述は増えない*5 異なる場所にある別々のパッケージを同時に利用することができる*6 作成したパッケージ(クラスファイルの集まり)をディレクトリ(フォルダ)単位で配布することができる コアを使わない環境でクラスを利用するとき、書き換えなければならない部分が少ない コンテナ*7非依存 コア部分からコンテナ依存コードを取り除いてあるので、コンテナの種類を問わない ブラウザ(Firefox,Mozilla,MSIE,Netscape,Opera)で動作確認済み WSHで動作確認済み SVG(未確認・対応しているはず) Acrobat(未確認・対応しているはず) FLASH(ActionScript)(未確認・対応?←私のFLASH知識と環境がない) コンテナ提供のオブジェクトやECMAScriptに定義された組み込みオブジェクトに対する変更(汚染)がない*8 デメリット ファイルが増える(でもディレクトリでツリー状になっているので管理しやすいです) クラスを作るにはJavaScript(ECMAScript)に関する知識がかなり必要*9 *1:ClassPackagingTool *2:継承させるにはスタティック変数・メソッドを利用する *3:継承される変数やメソッドに対する変更のとき *4:ただし、仕様と実装を再検討の余地あり *5:includeメソッドを使うので、使う側の手間はほとんど変わらない *6:名前空間も含めた完全修飾クラス名が重複しない限り *7:ブラウザなどのECMAScriptを動作させる媒体 *8:コアだけの場合。当然、周辺のユーティリティー系は変更を加えます。 *9:使う分には、JavaScriptが普通に使えれば問題ありません。