感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

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 *****