クラスパッケージ化ツール(CPT)の特徴

クラスパッケージ化ツール(CPT*1)でできることは以下の通りです。

  1. オブジェクト指向
    • プロトタイプベースの継承が可能
    • ソース上もわかりやすい形で"クラス"を作成できる
    • 定義できる変数の種類は以下の通り
      • クラス所属のプライベート変数・メソッド(継承されない)
      • クラス所属のスタティック変数・メソッド(継承される)
      • クラス所属のパブリック変数・メソッド(継承されない*2
      • プロトタイプ所属のパブリック変数・メソッド(継承される)
      • インスタンス所属のプライベート変数・メソッド(継承されない)
      • インスタンス所属のパブリック変数・メソッド(継承される)
    • 当然、多段階の継承も可能である
    • 継承後にスーパークラスが動的に変更*3されたときでも、サブクラスでその変更が有効になる
    • 抽象クラス的な使い方,インターフェース*4を使用できる
  2. クラスパッケージ化
    • パッケージ化によりクラスに名前空間が導入される
    • 1クラス1ファイルとして保存するので、保守が楽になる
    • クラスが増えてもscriptタグの記述は増えない*5
    • 異なる場所にある別々のパッケージを同時に利用することができる*6
    • 作成したパッケージ(クラスファイルの集まり)をディレクトリ(フォルダ)単位で配布することができる
    • コアを使わない環境でクラスを利用するとき、書き換えなければならない部分が少ない
  3. コンテナ*7非依存
    • コア部分からコンテナ依存コードを取り除いてあるので、コンテナの種類を問わない
    • コンテナ提供のオブジェクトやECMAScriptに定義された組み込みオブジェクトに対する変更(汚染)がない*8
  4. デメリット
    • ファイルが増える(でもディレクトリでツリー状になっているので管理しやすいです)
    • クラスを作るにはJavaScript(ECMAScript)に関する知識がかなり必要*9

*1:ClassPackagingTool

*2:継承させるにはスタティック変数・メソッドを利用する

*3:継承される変数やメソッドに対する変更のとき

*4:ただし、仕様と実装を再検討の余地あり

*5:includeメソッドを使うので、使う側の手間はほとんど変わらない

*6:名前空間も含めた完全修飾クラス名が重複しない限り

*7:ブラウザなどのECMAScriptを動作させる媒体

*8:コアだけの場合。当然、周辺のユーティリティー系は変更を加えます。

*9:使う分には、JavaScriptが普通に使えれば問題ありません。