よろずやネット

最近はLibreofficeにハマっています。

クラスにメソッドを追加する(コンストラクタ)

前回、Hito2というHitoクラスを引き継いだ新しいクラスを作成しました。
使用方法は、

'変数宣言、
Dim A As New Hito2

'変数に値の代入(初期化)です。
With A
    .Shincho=170
    .Taijyu=50
    .Age=25
End With

というところまで前回説明しました。

しかし、Hito2クラスを使う変数が数多く必要な場合、
例えば、A~Eまでの5つの変数を使用する場合、
Dim A As New Hito2
Dim B As New Hito2
Dim C As New Hito2
Dim D As New Hito2
Dim E As New Hito2

として、その後メンバー変数の初期化を
With A
    .Shincho=170
    .Taijyu=50
    .Age=25
End With
以降、BCDEの順番に
・・・・・・・
With E
    .Shincho=180
    .Taijyu=65
    .Age=35
End With
というように記述していくのは、とてもだるい話です。

そこで、メンバー変数の初期化という処理を実行してくれるメソッド、コンストラクタの登場です。
コンストラクタを設定すれば、変数宣言とメンバー変数の初期化を一回ですることが可能になります。

例えば、こんな感じです。
Dim A As New Hito2(身長の値、体重の値、年齢の値)

これを可能にするのが、クラス内にSub Newプロシージャの追加です。

前回作成したクラスHito2に、下記のように追加します。

Public Class Hito2
    Inherits Hito
    Public Age As Integer '年齢

    ' ***** ここからがコンストラクタの記述 *****
    ' 変数宣言がなされる時に渡される値の変数をNewの後の括弧内に書く
    Public Sub New(身長 As Single, 体重 As Single, 年齢 As Integer)
        Me.Shicho=身長  ' 渡された値 「身長」 の代入
        Me.Taijyu=体重  ' 渡された値 「体重」 の代入
        Me.Age=年齢  ' 渡された値 「年齢」 の代入
    End Sub
End Class

上記のようにコンストラクタを追加した後、変数宣言とメンバー変数の初期化を一回でできるようになります。

Dim A As New Hito2(170, 50, 25)

クラス内の記述が増えましたが、プログラム本体側の記述は大幅に減少させることができます。
SharpDevelopでは、コード入力時に下記のような入力支援が出てきます。

イメージ 1

ちなみに、上記例ではコード内に変数の定義で日本語を使いましたが、個人的には何か問題が起きそうな気がして、日本語を使わないようにしています。