VBScriptでクラスやメソッドを作ってみる

これは意外だったんだけど、VBScriptではクラスを作ることができます。
publicとかprivateなどの可視性も定義できました。

けっこうナメてかかっていたんですが、意外と色々と揃ってて、Windowsで何かしたいときは便利なのかも。
データ型という概念はありません。

VBScriptのクラスは以下のような構文で作ります。

Class クラス名
'中に色々書く
End Class

使う側は、

Set 変数名 = New クラス名

という使い方をします。

クラスのインスタンスを解放するには、

Set 変数名 = Nothing

と書きます。
ガーベジコレクション機能があるのかはまだちょっとわからない。

C#にもあったデストラクタという機能は使えます。
デストラクタとは、クラスのインスタンス解放時に自動的に実行される特別なプロシージャのことです。

デストラクタは

Private Sub Class_Terminate()
End Sub

という構文で定義します。

コンストラクタは

Private Sub Class_Initialize()
End Sub

という構文で定義します。

サンプルを作ってみます。

Option Explicit
Dim clazzA
Dim clazzB
Set clazzA = New SampleClass
Set clazzB = New SampleClass
clazzA.setValue1 = 100
clazzA.setValue2 = 300
clazzA.add
clazzB.setValue1 = 7000
clazzB.setValue2 = 8000
WScript.Echo "インスタンス1の結果↓"
clazzA.showResult
'
WScript.Echo "インスタンス2の結果" & clazzA.add
Class SampleClass
Dim val1
Dim val2
Dim sum
'コンストラクタ
Private Sub Class_Initialize()
val1 = 0
val2 = 0
End Sub
Private Sub Class_Terminate()
WScript.Echo "デストラクタ"
End Sub
Public Property Let setValue1(value)
val1 = value
End Property
Public Property Let setValue2(value)
val2 = value
End Property
'メソッドの戻り値は、メソッド名と同じ変数に入れればいい
Public Function add()
sum = val1 + val2
add = sum
End Function
Public Function showResult()
WScript.Echo "結果は:" & sum
End Function
End Class

これを実行すると、以下のように表示されます。

Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
インスタンス1の結果↓
結果は:400
インスタンス2の結果400
デストラクタ
デストラクタ
***** script completed - exit code: 0 *****