VBScriptにおけるクラスの定義とインスタンス化の基本

VBScriptは、主にWindows環境で使用されるスクリプト言語です。

比較的簡単に学べ、システム管理や簡単なアプリケーションの作成に適しています。

本記事では、VBScriptでのクラスの定義方法と、インスタンスの作成について詳しく解説します。

クラスとオブジェクト指向の概念を理解することで、VBScriptを使ったスクリプト開発がより効率的になるでしょう。

クラスとは何か?

クラスは、オブジェクトの設計図やテンプレートと考えることができます。

クラスを定義することで、そのクラスを元にして複数のオブジェクト(インスタンス)を生成できます。

オブジェクトは、クラスで定義されたプロパティ(データ)とメソッド(機能)を持つ個別の実体です。

たとえば、「車」というクラスを定義すると、そのクラスから「車A」「車B」などの個々の車(オブジェクト)を生成できます。

それぞれの車は異なる色や速度などのプロパティを持ちますが、基本的な構造や機能は同じです。

VBScriptでのクラスの定義

VBScriptでは、Classキーワードを使用してクラスを定義します。クラス内では、プロパティやメソッドを定義できます。基本的なクラス定義の例を見てみましょう。

Class Car
    Public Color
    Public Speed

    ' コンストラクタとして機能するメソッド
    Public Sub Initialize(c, s)
        Color = c
        Speed = s
    End Sub

    ' 車の情報を表示するメソッド
    Public Sub ShowInfo()
        MsgBox "Color: " & Color & ", Speed: " & Speed
    End Sub
End Class

この例では、Carというクラスを定義しています。ColorとSpeedという2つのプロパティを持ち、これらを初期化するためのInitializeメソッド、そして車の情報を表示するShowInfoメソッドがあります。

クラスのインスタンス化

クラスを定義した後は、そのクラスのインスタンスを作成して使用します。インスタンス化にはSetキーワードを使用します。

次に、上記で定義したCarクラスをインスタンス化する例を示します。

Dim myCar
Set myCar = New Car

myCar.Initialize "Red", 120
myCar.ShowInfo

このスクリプトでは、myCarというオブジェクトを作成し、Initializeメソッドを使って色と速度を設定しています。その後、ShowInfoメソッドを呼び出して車の情報を表示します。

プロパティの操作

クラスのインスタンス化後、プロパティに直接アクセスして値を取得したり変更したりすることができます。

myCar.Color = "Blue"
MsgBox "The new color of my car is " & myCar.Color

このように、Colorプロパティを直接変更することができます。

クラスのメソッドの活用

メソッドは、クラス内で定義された機能です。先ほどの例では、ShowInfoというメソッドがありました。さらに別のメソッドを追加してみましょう。

Class Car
    Public Color
    Public Speed

    Public Sub Initialize(c, s)
        Color = c
        Speed = s
    End Sub

    Public Sub ShowInfo()
        MsgBox "Color: " & Color & ", Speed: " & Speed
    End Sub

    ' スピードを加速させるメソッド
    Public Sub Accelerate(increase)
        Speed = Speed + increase
    End Sub
End Class

Accelerateメソッドは、現在の速度に指定した値を加算するメソッドです。これを使用する例を見てみましょう。

myCar.Accelerate 30
myCar.ShowInfo

このコードでは、Speedプロパティが30増加し、ShowInfoメソッドを使って新しい速度が表示されます。

プライベートプロパティとメソッド

VBScriptでは、クラス内のプロパティやメソッドをプライベートに設定することもできます。プライベートなプロパティやメソッドは、クラスの外部から直接アクセスできません。

Class Car
    Private Color
    Private Speed

    Public Sub Initialize(c, s)
        Color = c
        Speed = s
    End Sub

    Public Sub ShowInfo()
        MsgBox "Color: " & Color & ", Speed: " & Speed
    End Sub

    Public Sub Accelerate(increase)
        Speed = Speed + increase
    End Sub

    ' プライベートプロパティにアクセスするメソッド
    Public Function GetColor()
        GetColor = Color
    End Function
End Class

この例では、ColorとSpeedプロパティがプライベートとして定義されており、直接アクセスできませんが、GetColorメソッドを使用してColorの値を取得することができます。

MsgBox "The color of my car is " & myCar.GetColor()

クラスの継承(VBScriptでは未サポート)

オブジェクト指向プログラミングの一般的な概念として、クラスの継承があります。

これは、既存のクラスを基に新しいクラスを作成し、機能を拡張するものです。

しかし、VBScriptではクラスの継承はサポートされていません。

クラスの再利用を行うためには、クラスの中で別のクラスのインスタンスを持ち、そのメソッドやプロパティを呼び出す形で模倣する方法があります。

演習問題

学んだ内容を確認するために、以下の演習問題に挑戦してみましょう。

演習1

車の燃料を管理するためのFuelプロパティをCarクラスに追加し、AddFuelメソッドで燃料を追加する機能を実装してください。

また、ShowInfoメソッドで現在の燃料量も表示されるようにしてください。

演習1:解答例
Class Car
    Public Color
    Public Speed
    Public Fuel

    Public Sub Initialize(c, s, f)
        Color = c
        Speed = s
        Fuel = f
    End Sub

    Public Sub ShowInfo()
        MsgBox "Color: " & Color & ", Speed: " & Speed & ", Fuel: " & Fuel
    End Sub

    Public Sub Accelerate(increase)
        Speed = Speed + increase
    End Sub

    Public Sub AddFuel(amount)
        Fuel = Fuel + amount
    End Sub
End Class

Dim myCar
Set myCar = New Car

myCar.Initialize "Green", 100, 50
myCar.AddFuel 20
myCar.ShowInfo

演習2

複数のCarオブジェクトを作成し、それぞれに異なる値を設定して、各車の情報を表示するスクリプトを作成してください。

演習2:解答例
Dim car1, car2, car3
Set car1 = New Car
Set car2 = New Car
Set car3 = New Car

car1.Initialize "Red", 120, 40
car2.Initialize "Blue", 130, 30
car3.Initialize "Yellow", 110, 60

car1.ShowInfo
car2.ShowInfo
car3.ShowInfo

まとめ

本記事では、VBScriptでのクラスの定義とインスタンス化について解説しました。

クラスを使いこなすことで、コードの再利用性が高まり、より効率的にプログラムを作成できます。

VBScriptは軽量で学びやすいため、まずは簡単なクラス定義から始めてみてください。