小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


レガシーASPでクラスを使う

レガシーASP(Active Server Pages)では、独自クラスを作ることができます。以下に、VBScriptでのクラスの使い方をまとめてみました。

クラスの定義

たとえば、nameプロパティと対応するゲッタ・セッタを持つ、Hogeという名前のクラスを作る場合は、以下のようにClassステートメントを使って定義します。

<%
Class Hoge
  Private name

  Public Sub SetName(x)
    name = x
  End Sub
  
  Public Function GetName()
    GetName = name
  End Function

End Class
%>

※ちなみにプロパティの場合は、Letステートメント、Getステートメントを使ってプロパティのアクセサメソッドを定義できます。

Property Getステートメント、Property Letステートメントを用いたプロパティの定義

 Captionプロパティに値を代入する際に何か処理を加えたい場合などは、Publicステートメントの代わりにProperty Getステートメント、Property Letステートメントを用いる。
第9回 VBScriptのオブジェクトを使いこなす (3/4):基礎解説 演習方式で身につけるチェック式WSH超入門 - @IT

クラスを使用する

レガシーASPでクラスを使用するには、Newステートメントでインスタンス化して使用します。クラスを別ファイルに記述する場合は、<--#include file="xxx.asp"-->というようにインクルードしてから使用します。

Dim objHoge
Set objHoge = New Hoge
objHoge.SetName("hoge")
コンストラクタとデストラクタ

クラス生成時に自動実行されるコンストラクタとクラスが破棄されるタイミングで実行されるデストラクタは、以下のように定義することができます。

' コンストラクタ
Private Sub Class_Initialize
  ' 処理
End Sub

' デストラクタ
Private Sub Class_Terminate
  ' 処理
End Sub
おわりに

今までASP.NETでないとクラスが使えないものだと思っていましたが、レガシーASPでもクラスが使えたのは正直おどろきでした。データベースアクセスを司るクラスや共通関数をまとめたクラスなど、役割ごとにクラスを作ってやることで、プログラムの構成がわかりやすくなると思います。ぜひ活用してみてください。